首页 > 解决方案 > 二进制流上带有 WHENCE 的 SEEK_END

问题描述

我对C Programming: A Modern Approach, 2nd Edition on Page 446 中的这句话感到困惑,

对于二进制流,fseek不需要支持 wherece 的调用SEEK_END

这是为什么?这似乎是一个奇怪的规定。

标签: cbinarystandardsfseek

解决方案


在规范中查找它,它说

将文件位置指示符设置为文件结尾,与 一样fseek(file, 0, SEEK_END),对于二进制流(因为可能存在尾随null字符)或任何具有状态相关编码但不能确保以初始移位状态结束的流具有未定义的行为。

所以我想是空字符的存在导致了这种行为,尽管我不确定为什么在这里对它们进行不同的处理。


推荐阅读