繁体   English   中英

fseek 和 fwrite 过去 EOF

[英]fseek and fwrite past EOF

我们首先假设我有一个由 5 个整数组成的 20 字节二进制文件。 现在让我们说我试图:

fseek(fp, 2*sizeof(int), SEEK_END)

我试着打电话:

fwrite(&i, sizeof(int), 1, fp);

这甚至可能吗?

如果可能的话,新的二进制文件的大小是 32 还是只是大小为 24? 如果是 32,从 position 20 到 27 的二进制文件的内容是什么?

据此

  • 允许库实现无意义地支持SEEK_END因此,使用它的代码没有真正的标准可移植性)。

在这里

POSIX 允许在现有文件结尾之外进行搜索 如果在此查找之后执行 output,则从间隙中读取的任何内容都将返回零字节。 在文件系统支持的情况下,这会创建一个稀疏文件

在我的测试系统上, seeking过去的SEEK_END用空字节填充文件的其余部分,直到新的文件指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM