c语言文件结尾错误,【讨论】c语言判断文件结尾问题的刨根问底

本帖最后由 奉聪 于 2017-2-27 00:13 编辑

一、问题的由来

最近在学习一些文件的知识,但有时会出现复制的文件会多出一个字节的问题

于是想是不是把所谓的 ‘文件末尾’ 也写了进去,于是找某度。。。

就牵涉到C语言怎么判断文件结尾的问题了:文件末尾到底有没有一个结束的标识?

二、寻找答案

答案一:

很多网友认为文本文件是通过一定编码规则再存入硬盘的,那么就不存在编码为-1的

(比如ASCⅡ码没有负数),那么EOF(-1)作为文本文件的结尾也是合理的。那么如

此说来二进制文件结尾又如何判断的呢? (二进制中-1可能是有效值)

答案二:

55fd2b2273b5a8b4531f72773c469d6e.gif

bin.png (35.21 KB, 下载次数: 2)

2017-2-26 21:01 上传

这位兄弟认为,不管是文本文件还是二进制文件,文件中根本不存在所谓的

‘文件末尾’标识。一切都是文件系统在管理。

只是某些函数(如fgetc)在读取到文本文件结束后会返回EOF(0XFFFFFFF)

(即整型的-1)

但是文件本身并无EOF这个标识符,貌似说的还是有道理哈,先信他

答案三:

文本文件有这个标识符,但是不是单纯的-1,而是Ctrl+z的ASCII码值0x1a

(

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值