我有一个文本文件' 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;
}
我无法修复它。请帮助......
答案 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循环的一次迭代返回。