从文件中读取行时遇到问题

Having trouble reading lines from a file

本文关键字:遇到 问题 读取 文件      更新时间:2023-10-16

我有一个文本文件'patient_info.txt',如下所示:

100 普拉纳贝什 2014/12/12 2014/12/15 Dr.Ajit_Mukherjee,Dr.Pramotesh_Halder AC02 肺结核

101 桑帕德 2014/3/01 2014/03/07 Dr.Sarbani_Ghosh GEN304,登革热

102 Sambit 2014/11/22 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....nn";
                    else
                        break;
                }
                if(found)
                    break;
            }

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

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 循环的一次迭代返回的内容可能会有所帮助。