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文件中获取数据。你能解释为什么吗?

最佳答案

您的代码中有几个问题:


main不返回整数。
不与占位符一致且正确地使用fscanf。
您没有检查fscanf的返回值是否失败。
如果您有C ++ 11支持,则应将NULL替换为nullptr。


正确的代码应如下所示:

int main() {
    nodLista* LS=NULL;
    FILE* F=fopen("asaceva.txt","r");
    if(F!=NULL) {
        char buffer[100]; int id;float pret;
        if (!fscanf(F,"%d",&id))
            cout << "Error happened: " << ferror(F) << ", error string: " << strerror(errno) << endl;
        while(!feof(F)) {
            if (!fscanf(F,"%f",&pret))
                cout << "Error happened: " << ferror(F) << ", error string: " << strerror(errno) << endl;
            if (!fscanf(F,"%s",buffer))
                cout << "Error happened: " << ferror(F) << ", error string: " << strerror(errno) << endl;
            Produs* p= creareProdus(id,pret,buffer);
            LS=inserareSfarsit(LS,*p);
            if (!fscanf(F,"%d",&id))
                cout << "Error happened: " << ferror(F) << ", error string: " << strerror(errno) << endl;
        }
        afisareLista(LS);
    }
    _getch();
    return 0;
}

关于c++ - 列表未从txt文件显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22950218/

10-11 13:19