while(!feof(in))问题

时光诺下的雨丶 2017-12-19 09:28:30
	int iCount = 0, iTotal = 0;						
FILE *fpInputNum = NULL;
if ((fpInputNum = fopen("Num_of_Input.dat", "rb")) == NULL);
else
{
while (!feof(fpInputNum))
{
iTotal = fgetc(fpInputNum);
//printf("单次总计:%5d\n", iTotal);
iCount = iCount + iTotal;
}
fclose(fpInputNum);
}


用!feof判断是否到了文件尾,到了就结束循环,这样写对嘛?
如果对了,那下面为什么会循环了两次啊/
文件里就一个二进制数 3 ,第一次读取出来是3,第二次读取出来是-1
两个相加之后结果iCount变成了2,我预想的应该是3,才是对的。
如图,本来文件中应该有三个结构体

...全文
435 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 2017-12-20
  • 打赏
  • 举报
回复
在VC里,只有当文件位置指针到了文件末尾,然后再发生读/写操作时,标志位才会被置为含有_IOEOF,调用feof()才会得到文件结束的信息。正确写法参看:http://blog.csdn.net/woaisia/article/details/46441449
自信男孩 2017-12-19
  • 打赏
  • 举报
回复
引用 1 楼 jtidni 的回复:
请问,这个-1,是怎么来的?
这个博客可以解决你的若干问题:
http://blog.csdn.net/qq_29350001/article/details/53100563
  • 打赏
  • 举报
回复
请问,这个-1,是怎么来的?

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧