feof()函数和EOF结束符的区别与联系

windows下的txt文本文件中的内容都是ASCⅡ代码值的形式存放的。众所周知,ASCII 码的范围是在0至255.对于其他范围的值是无法识别的,因此像-1这样的值是不能转化成相应的字符存在于文本文件当中的。但是对于二进制文件来说,-1确实是可以出现的

feof()函数在c/c++中是用来判断当前要操作的文件是否结尾,如果文件已结尾,返回值为1,否则就返回0.它判断文件是否结尾的原理是与数据库中的eof()函数是不一样的。feof()是根据读取文件的内容是否为空来判断是否结尾;而eof()函数是根据当前的文件指针的位置是否已经到达文件的末尾。这就是说feof()是根据内容来判断,而efo()是根据位置来判断。

EOF是文件结束符标志,它的值是-1

定义:#define EOF (-1)

定义:#define _IOEOF Ox0010

定义:#define feof(_stream) ((_stream)->flag&_IOEOF)

feof()根据上一次对文件操作读取的内容来判断是否结尾了。feof()读取完文件内最后一个字符后,还要继续执行操作,读取下一个位置的内容,如果为空说明已到了文件尾。这是会设置_stream->flag为_IOEOF.才使feof()返回1.

EOF只能用于判断文本文件是否结束的标志,此时检测读取的字符是否等于EOF来判断文件结束就不会出现feof()判断的问题(目标文件会比源文件对出一个字节的内容)。有时候EOF不能用来代替feof()因为有肯能读取文件出错也会返回-1.

因此 用feof( ) 判断文件结束,获取的文件比应有的多1; 其实正确使用 feof 函数很容易,只要记住一个原则就是了:“先读文件后用 feof 判断”。你上面使用 feof 函数的程序都没有做到这一点,而是先用 feof 函数判断、然后再读文件,所以是不正确的。可根据上面的这个原则修改你的程序,使之正确。


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值