這非常奇怪 - 我從文件中獲取行,將它們打印到屏幕上,並將它們存儲在數組中。將它們打印到屏幕上時,一切看起來都很好,但在數組中,每個元素都設置爲文件的最後一行。逐行讀取文件只返回最後一行
文件看起來是這樣的:
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()',它不太容易出錯。 –