网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月08日漏签0天
codeblocks吧 关注:18,896贴子:46,642
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回codeblocks吧
>0< 加载中...

发现C语言feof一个bug!!急求大神说说怎么解决

  • 取消只看楼主
  • 收藏

  • 回复
  • 凱爾特
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序如图,数据文件如图,结果如图


按理说读完字母‘g’就应该到文件末了,不应该再继续读下去了
难道'g'后面还有一个隐形的字符?
因为我在编一个大的程序,这只是我bug的缩影,我要是想让他读到g就能判断出文件已读完,我该怎么加判断啊?


  • 凱爾特
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我知道了,feof函数会给文件中的每一个字符一个“是否为文件末”的标识,一开始所有字符的标志都是“非文件结尾”,所以当feof读到文件末最后一个字符的时候依然不会判别生效,不过当他读到下一个位置发现没有东西的时候,才知道刚刚那个就是文件末,于是才追悔莫及地将上一个字符的标志改为“是文件末”,“是文件末”以后的自然都是文件末,feof在下一次执行的时候就会判断生效。这也是feof滞后性的原因


2026-04-08 14:01:09
广告
不感兴趣
开通SVIP免广告
  • 凱爾特
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
至于具体的解决方案可以判别一下 fread 函数,这个函数的返回值是读取的字节数,
如果我的程序中 fread(buffer,sizeof(char),1,pFile) 加一个判断,判断为非零值再继续往下执行,就不会发生多读一个值的情况了


  • 凱爾特
  • 抢个沙发
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
工程中读取数据文件创建链表的时候注意这一点可以防止每次建表的时候多建一个空节点


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回codeblocks吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示