关于C语言读取文件时候多读一行

为什么C语言读取文件到结构体时为什么整天多读一行?一切都是【!feof(fp)】的错!!!

  while (!feof(fp))
  
  {
  
  fgets(buffer,256,fp);
  
  j++;
  
  }

像这样的代码,是很多C语言学者经常犯的错误!!
  
  feof()这个函数是用来判断指针是否已经到达文件尾部的。
  
  若fp已经指向文件末尾,则feof(fp)函数值为“真”,即返回非零值;否则返回0。
  
  对呀!那有什么问题的呢?
  
  其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,如果后面还有换行或者空格的时候, 他会继续循环。所以就会多把最后循环一次。解决的方法其实很简单!!只需要把fgets放到while哪里判断就OK了!!

  while (fgets(buffer,256,fp))
  
  {
  
  j++;
  
  }
  

怎样?简单粗暴吧??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值