如果您可以保证在搜索后要写入数据,使用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,但其他平台呢?有什么需要注意的吗?
答案 0 :(得分:1)
是的,这很好用。只要您以w
或w+
模式打开文件,而不是a
或a+
,您就可以搜索文件中的任意一点并写入在那里,它将在文件中的那一点写入。文件的其他部分将保持不变;如果他们从未写过,他们将包含零字节。
因此,如果您在刚刚以w
模式打开的文件上执行以下操作(首先截断文件):
fseek(f, 10, SEEK_SET);
fwrite("abc", 1, 3, f);
rewind(f);
fwrite("1234567890", 1, 10, f);
文件的内容为:
1234567890abc