本帖最后由 奉聪 于 2017-2-27 00:13 编辑
一、问题的由来
最近在学习一些文件的知识,但有时会出现复制的文件会多出一个字节的问题
于是想是不是把所谓的 ‘文件末尾’ 也写了进去,于是找某度。。。
就牵涉到C语言怎么判断文件结尾的问题了:文件末尾到底有没有一个结束的标识?
二、寻找答案
答案一:
很多网友认为文本文件是通过一定编码规则再存入硬盘的,那么就不存在编码为-1的
(比如ASCⅡ码没有负数),那么EOF(-1)作为文本文件的结尾也是合理的。那么如
此说来二进制文件结尾又如何判断的呢? (二进制中-1可能是有效值)
答案二:
bin.png (35.21 KB, 下载次数: 2)
2017-2-26 21:01 上传
这位兄弟认为,不管是文本文件还是二进制文件,文件中根本不存在所谓的
‘文件末尾’标识。一切都是文件系统在管理。
只是某些函数(如fgetc)在读取到文本文件结束后会返回EOF(0XFFFFFFF)
(即整型的-1)
但是文件本身并无EOF这个标识符,貌似说的还是有道理哈,先信他
答案三:
文本文件有这个标识符,但是不是单纯的-1,而是Ctrl+z的ASCII码值0x1a
(