feof函数的理解(你真的了解feof函数吗?)

        通常大家对于feof函数的认知是用这个函数来判断文件读取是否结束,但其实这个函数的作用应该更倾向于是用来检测文件读取结束(这个时候文件读取已经结束了)是否正常

        文件读取结束通常有两种方式,第一种是读取到文件末尾的正常结束,还有一种就是读取到中途的一场结束

        在feof这个函数的介绍中我们可以看到,feof函数的作用是检查是否有与流关联的文件结束符

        大家在使用feof函数前通常会先用fgetc,fgets,fread函数来进行读取,然后再进行feof的使用,其实feof接收并判断的正是这些函数返回的值

        当feof读取到的这些函数返回的结束返回的值时,如fgetc读取到文件末尾结束后会返回EOF;fgets读取到文件末尾结束返回NULL;fread读取到文件末尾结束返回的是实际读取到的元素个数

       

        feof读取到的是这些函数读取到文件末尾返回的值,就证明了读取之所以结束是读取到文件末尾而结束的,而不是其他不可控因素结束的。

        这个时候feof就会返回一个非零的值,证明这个文件是读取到文件末尾而结束的

        总结:

        所以,大家平时常常使用if(feof(pf))来检测是否到末尾,本质上就是看看上面这些函数有没有读取到末尾返回文件结束符。

        返回了就证明读取到了文件末尾,那么这个时候feof就会返回一个非0的值,if就会继续往下走

        如果没有返回,就证明文件读取没有到末尾,在中途出现异常停止了,这个时候其实文件读取就是结束的状态,只不过是异常结束的状态,这也是为什么我在开头说,feof来判断文件读取是否结束过于牵强了

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值