这个问题在这里已有答案:
我对此声明感到困惑,来自第446页的C Programming: A Modern Approach, 2nd Edition,
对于二进制流,
fseek
不需要支持SEEK_END
的调用
这是为什么?这似乎是奇怪的规定。
它说,查找in the spec
将文件位置指示符设置为文件结尾,与
fseek(file, 0, SEEK_END)
一样,具有二进制流的未定义行为(因为可能存在尾随null
字符)或具有状态相关编码但未确定以初始移位状态结束的任何流。
所以我猜这是导致这种行为的空字符的存在,虽然我不确定为什么他们在这里被区别对待。