人の名前を含むファイルから行を読み取っています。最初の行には男性の名前が含まれ、2 番目の行には女性の名前が含まれています。次に、これらの名前を男性用と女性用の 2 つの配列に保存したいのですが、それらを印刷すると奇妙な結果が得られます。正しく読んでいないのか、間違って印刷しているのかわかりません
char line[100]; //holds line read
char *item; //item in a line
char *item2;
int participants = 5; //number of people in the event
char* maleNames[participants];
char* femaleNames[participants];
fgets(line, 255, file);
int i;
item = strtok(line, " ");
for(i=0; i<participants; i++)
{
maleNames[i] = item;
item = strtok(NULL, " ");
}
//read female names now
fgets(line, 1024, file);
item2 = strtok(line, " ");
for(i=0; i<participants; i++)
{
femaleNames[i] = item2;
item2 = strtok(NULL, " ");
}
これらの行が読み取られます
John Jeffrey Adam Mark Peter
Jenny Alice Sally Wendy Amanda
ただし、次のように印刷すると:
for(i=0;i<participants;i++)
{
printf("%s %s\n", maleNames[i], femaleNames[i]);
}
私はとても違うものを手に入れます:
Jenny Jenny
Alice
ally Sally
Wendy Wendy
Amanda
注:女性の名前を読む前に男性の名前を読んだ直後に印刷すると、正しく印刷されます