用fseek安全保留空间?

时间:2016-11-04 18:33:14

标签: c io cross-platform fseek

如果您可以保证在搜索后要写入数据,使用fseek在文件开头保留字节是否安全?例如:

// reserve space
fseek(f, 4096, SEEK_SET);

// ...

// write some data after the reserved space
fwrite(buf, 1, bufsize, f);

// go back to the reserved space (to update it)
rewind(f);

// ...

我注意到它适用于Windows,但其他平台呢?有什么需要注意的吗?

1 个答案:

答案 0 :(得分:1)

是的,这很好用。只要您以ww+模式打开文件,而不是aa+,您就可以搜索文件中的任意一点并写入在那里,它将在文件中的那一点写入。文件的其他部分将保持不变;如果他们从未写过,他们将包含零字节。

因此,如果您在刚刚以w模式打开的文件上执行以下操作(首先截断文件):

fseek(f, 10, SEEK_SET);
fwrite("abc", 1, 3, f);
rewind(f);
fwrite("1234567890", 1, 10, f);

文件的内容为:

1234567890abc