查找并通过EOF写信

问题描述 投票:2回答:1

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

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

我试图打电话给:

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

这甚至有可能吗?

如果可能的话,新的二进制文件的大小将为32,或者只是大小为24?如果它是32,那么从位置20到27的二进制文件的内容是什么?

c file file-io binary
1个回答
4
投票
根据this

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

POSIX允许在文件的现有末尾之外查找

。如果输出是执行此搜索后,从间隙读取的任何内容都将返回零个字节。在文件系统支持的地方,这会创建一个sparse file在我的测试系统seeking上,SEEK_END之后将使用空字节填充文件的其余部分,直到新文件指针为止。
© www.soinside.com 2019 - 2024. All rights reserved.