質問: 最大5人の名前が、EOFが入力されるまで一旦配列nameに格納し、改行されると次の行に行きます。そして格納し終わった配列の中身をポインタ配列directoryにコピーしました。 最後に人数分の名前とアドレスを出力できれば成功です。 1人や2人では文字化けしないのですが、3人目を入力すると 名前の出力が文字化けします。アドレスは無事です。 ``` #include #include #include int main(void){ int s; char name[5][256]; char *directory[5]; int i,k; int j=0; //何人入力されたか数えます puts("名前を最大5人分入力して下さい."); for(i=0;i<5;i++){ s=getchar(); if(s==EOF) //EOFが入力されたら終了 break; else{ k=0; while(s!='\n'){ //改行されるまで、1人分の名前が入力されるまで格納し続けます name[i][k]=s; s=getchar(); k++; } directory[i]=malloc(20); strcpy(directory[i],name[i]); j++; //何人入力されたか数えます } } for(i=0;i
回答: name[i]が'\0'で終端されていないように見える。