如何让fscanf自动在文件读结束时候停止执行

fscanf调用成功返回1,那么如何让它自己读文件,并且在文件内容读完时候不在读了??
程序: while(fscanf(fp,"%s%s%f",&(stu[i].id),&(stu[i].name),&(stu[i].avg)) && i<5)
i++;
上面是用i<5来做结束条件,曾经试过这样的:
while(fscanf(fp,"%s%s%f",&(stu[i].id),&(stu[i].name),&(stu[i].avg)))
i++;
本来想应该可以,但是程序执行的时候确出错,一直停留在循环,那么,如何让fscanf自动在文件读结束时候停止执行?

用 feof(fp) 判断 读到了文件结束符 EOF
数据量大的时候用此法保险。

while (!feof(fp)) {
if ( fscanf(fp...)==EOF ) break;
}

或:
while ( fscanf(fp,...) !=EOF ){}
数据量大的时候(成千上万行),不保险。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-06
fscanf如果读取到文件尾会返回NULL, 可以从这点判断是不是到文件尾.
while(!fscanf(stream, "format", ...));
这样就可以把一个文件的内容读取完毕.
stream是输入流, 即文件指针.
"format"是格式字符串, 即用于写%s, %d的地方.
即后面跟的不定参数.
第2个回答  2008-05-24
检查文件是否结束,标志是EOF

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网