这非常奇怪 - 我从文件中获取行,将它们打印到屏幕上,并将它们存储在数组中。将它们打印到屏幕上时,一切看起来都很好,但在数组中,每个元素都设置为文件的最后一行。逐行读取文件只返回最后一行
文件看起来是这样的:
DarkMatter
Fire
Water
Air
Earth
Plasma
Wind
这是我的代码:
char *rooms[7];
FILE *roomFile = fopen("rooms.txt", "r");
char name[20];
for(i=0; i<7; i++) {
fgets(name, sizeof name, roomFile);
rooms[i] = name;
printf("%s", rooms[i]);
}
for(i=0; i<7; i++) {
printf("%s\n", rooms[i]);
}
当文件环路一切正常时打印rooms[i]
,但一旦我尝试之后打印室阵列,每个元素都设置为wind
。这怎么可能?
输出:
DarkMatter
Fire
Water
Air
Earth
Plasma
Wind
Wind
Wind
Wind
Wind
Wind
Wind
Wind
您无法检查分配错误。你也没有提到“免费”分配的必要性。在示例代码中鼓励这种松散是不好的。最好提一下'strdup()',它不太容易出错。 –