【发布时间】:2014-04-08 23:36:46
【问题描述】:
void main() {
nodLista* LS=NULL;
FILE* F=fopen("asaceva.txt","r");
if(F!=NULL) {
char buffer[100]; int id;float pret;
fscanf(F,"d",&id);
while(!feof(F)) {
fscanf(F,"f",&pret);
fscanf(F,"s",buffer);
Produs* p= creareProdus(id,pret,buffer);
LS=inserareSfarsit(LS,*p);
fscanf(F,"%d",&id);
}
afisareLista(LS);
}
_getch();
}
-
afisareLista:显示列表 -
inserareSfarsit: 在末尾插入
我不明白为什么它没有从 txt 文件中获取数据。你能解释一下为什么吗?
【问题讨论】:
-
这是
int main,而不是void main。while (!eof())is wrong. 你最好使用<fstream>和std::string而不是 C 风格的 IO。 -
这就是我被教导使用它们的方式。为什么 feof 错了?
-
@mariusxd 他链接到的问题中的答案回答了该问题。
-
fscanf的格式说明符需要%。 -
链接解释得很好,同样的逻辑也适用于 C IO。它很容易导致单独阅读的错误,更不用说它在使用之前不检查输入是否成功。您还要求
fscanf读取到buffer的缓冲区溢出。改用someFileStream >> someCppString;可以很容易地避免这种溢出。
标签: c++ list linked-list queue