为什么while(!infile.eof())时,会多循环一遍才结束?

sunblue 2003-08-24 03:27:20
3x
...全文
1173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunblue 2003-08-24
  • 打赏
  • 举报
回复
“文件指针指在最后这个位置,但它还不是文件尾的标志EOF,”
受教了,3x
一直以为是指向下一个字符了
yurling 2003-08-24
  • 打赏
  • 举报
回复
比如说,文件的最后一个字符串是a ,
当你在循环体里面读入后,文件指针指在最后这个位置,但它还不是文件尾的标志EOF,
所以,此时while(!infile.eof())将顺利通过,只有当这一个进入循环体内再次读文件时,
才会读到EOF标志,此后infile.eof()才会为真
解决的办法:把判断放在循环体内,读文件之后,其他操作之前
if(!infile.eof()) break;
point_to 2003-08-24
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2143/2143562.xml?temp=.6750452

69,373

社区成员

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

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