无法从文件中读取行

时间:2014-12-21 06:06:51

标签: c++ if-statement file-io while-loop file-handling

我有一个文本文件' patient_info.txt'像这样:

100 Pranabesh 12/12/2014 15/12/2014 Dr.Ajit_Mukherjee,Dr.Pramotesh_Halder AC02 Tuberculosis

101 Sampad 01/03/2014 07/03/2014 Dr.Sarbani_Ghosh GEN304,登革热

102 Sambit 22/11/2014 NA Dr.Vashkar_Ganguly GEN310 Liver_Malfunction

我需要将每一行作为输入并比较第一个字段。麻烦是我的代码没有,读取第一行之后的行并进入无限循环。

代码就像这样:::

while(1)
            {
                cout<<"Enter patient Id to display the details:";
                cin>>id;
                while(1)
                {
                    r=fscanf(fp,"%d %s %s %s %s %s",&patient_id,&name,&admit_date,&release_date,&doc_consulted,&details);
                    while( r != EOF)
                    {
                        cout<<name<<endl;
                        if( patient_id == id)
                        {
                            cout<<name<<" "<<doc_consulted<<endl;
                            found=1;
                            break;
                        }
                        else
                            r=fscanf(fp,"%d %s %s %s %s %s",&patient_id,&name,&admit_date,&release_date,&doc_consulted,&details);
                    }
                    if( !found)
                        cout<<"\nInvalid Patient Id...Enter again....\n\n";
                    else
                        break;
                }
                if(found)
                    break;
            }

我无法修复它。请帮助......

1 个答案:

答案 0 :(得分:0)

r=fscanf(fp,"%d %s %s %s %s %s",&patient_id,&name,&admit_date,&release_date,&doc_consulted,&details);

应该是:

r=fscanf(fp,"%d %s %s %s %s %s", patient_id,name,admit_date,release_date,doc_consulted,details);

阅读字符串时,您不需要&。同样fgets(char *string, int num, FILE *stream)在这种情况下可能更合适,但由您决定如何从文件中逐行阅读。

还有一件事,尝试使用调试器来逐步执行while循环。可能有助于查看while循环的一次迭代返回。