我正在從包含人名的文件中讀取一行,第一行包含男性的名字,而第二行包含女性的名字。然後我想把這些名字存儲在兩個數組中,一個是男性,一個是女性,然而當我印刷它們時,我會得到奇怪的東西。我不知道如果我不讀他們正確,或打印錯誤在C中打印字符指針 - 我越來越不好格式化
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
注意:如果我在閱讀女性名字之前先閱讀了男性名字,那麼他們會正確打印。
你應該傳遞'sizeof(line1)'而不是'sizeof(line1)-1'。閱讀'fgets'的文檔 – user102008 2010-12-22 00:19:04