2010-09-19 9 views
0
class student 
{ 
char *name; 
int I; 
public: 
student() 
{ 
    I=0; 
    name=new char[I+1]; 
} 
student(char *s) 
{ 
    I=strlen(s); 
    name=new char[I+1]; 
    strcpy(name,s); 
} 
void display() 
{ 
    cout<<name<<endl; 
} 
void manipulate(student &a,student &b) 
{ 
    I=a.I+b.I; 
    delete name; 
    name=new char[I+1]; 
    strcpy(name,a.name); 
    strcpy(name,b.name); 
    } 
}; 
void main() 
{ 
    clrscr(); 
    char *temp="Jack"; 
    student name1(temp),name2("Jill"),name3("John"),S1,S2; 
    S1.manipulate(name1,name2); 
    S2.manipulate(S1,name3); 
    S1.display(); 
    S2.display(); 
    getch(); 
} 

J'ai calculé la sortie de ce code plusieurs fois mais je ne pouvais pas le comprendre. La sortie de ce code est: Jill endline JohnSortie liée aux pointeurs

+0

À quoi pensez-vous que la sortie soit? –

+0

Quelle est votre question? – abelenky

+0

La sortie doit être Jill une nouvelle ligne, puis Jack j'ai vérifié sur le compilateur – user451990

Répondre

0

Peut-être que vous voulez strcat au lieu de la deuxième strcpy dans la fonction de manipulation.

0

Votre problème est ici:

strcpy (nom, a.name); strcpy (nom, nom b); Copiera Jack + null dans les cinq premiers octets de nom, puis le deuxième strcpy copie Jill sur ces mêmes octets. Ensuite, dans le second cas, John est copié sur les octets initiaux.

Vous souhaitez probablement utiliser strcat?

Questions connexes