feof() 函数判断不准确的问题
Posted m-anonymous
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了feof() 函数判断不准确的问题相关的知识,希望对你有一定的参考价值。
大家在读文件时应该碰到过这样的问题,while(!feof(fp)) 函数在读文件时会多循环一次,导致 fscanf() 函数多读了一次文件。
所以也就在输出的时候会产生一些乱码。
可以看看下面的代码:
#include<stdio.h> int main(void) { FILE *fp; char str0[10],str1[10]; fp=fopen("C:\\Users\\Public\\Documents\\data1.txt","r"); while(!feof(fp)) { fscanf(fp,"%s %s",str0,str1); printf("%s %s ",str0,str1); fgetc(fp); } return 0; }
文档里的内容如下:
运行后可以看到:
循环确实是多循环了一次。
此时调整一下代码:
#include<stdio.h> int main(void) { FILE *fp; char str0[10],str1[10]; fp=fopen("C:\\Users\\Public\\Documents\\data1.txt","r"); while(!feof(fp)) { fscanf(fp,"%s %s ",str0,str1); printf("%s %s ",str0,str1); fgetc(fp); } return 0; }
看似没有什么变化是不是?
其实是在这里改了一下: fscanf(fp,"%s %s ",str0,str1);
我们来看看运行结果:
好了,问题解决了。
以上是关于feof() 函数判断不准确的问题的主要内容,如果未能解决你的问题,请参考以下文章
Qt编程遇到的问题,我在qt中直接使用C语言的程序片段,有问题 ,求解