c语言 判断文件结束问题 feof()
2013-10-11 20:01
225 查看
最近做开发的时候用到c语言文件的读写函数fread(),采用while(!feof(fp))来控制循环,结果发现每次读取数据的时候总会把最后一个数据单元读取两次,很是不解。
后来查找资料发现,原来fread()在读到文件最后一个字节时,feof(fp)还是为0值,此时while(!feof(fp))的控制条件依然为真,所以会将最后一个数据单元再次读取一遍。然后feof(fp)才为非0值,因此说这个方法在某些场合是不可行的。
可以采用 while(fread(p,len,1,fp)) 的方式来判断,因为fread返回的是读取的字节数,如果到了文件末尾,则读取到的字节数为0,while判断为假,跳出循环,即可把问题解决。
后来查找资料发现,原来fread()在读到文件最后一个字节时,feof(fp)还是为0值,此时while(!feof(fp))的控制条件依然为真,所以会将最后一个数据单元再次读取一遍。然后feof(fp)才为非0值,因此说这个方法在某些场合是不可行的。
可以采用 while(fread(p,len,1,fp)) 的方式来判断,因为fread返回的是读取的字节数,如果到了文件末尾,则读取到的字节数为0,while判断为假,跳出循环,即可把问题解决。
相关文章推荐
- c语言 判断文件结束问题 feof()
- 关于C语言feof()函数判断文件结尾的问题分析
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- 判断文件结束有两种方法:EOF和feof()
- C中判断文件结束的两种方法feof()和EOF
- 使用feof()判断文件结束时会多输出内容的原因
- feof()和EOF的用法—— C语言中文件结尾的判断 (个人感觉写的挺深刻)
- C 库函数 feof(FILE*) 判断文件末尾的问题
- 判断文件结束函数(feof)
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- 使用feof()函数判断文件是否结束
- 在以二进制文件打开方式打开文件的时候,fread返回值判断文件是否结束的问题
- C语言-EOF和feof()判断文件结尾的区别
- feof()函数读取文件和EOF结束符标志问题
- c语言中getchar函数的用法,涉及EOF文件结束符的问题
- 判断文件结束有两种方法:EOF和feof()
- feof()函数读取文件和EOF结束符标志问题
- 判断文件结束,feof……
- 判断文件结束有两种方法:EOF和feof()
- C语言feof()函数判断文件位置指针到末尾