如果可以保证在查找后仍有数据要写入,使用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上运行,但是其他平台呢?有什么需要注意的地方吗?
最佳答案
是的,这很好。只要您以w
或w+
模式(而不是a
或a+
)打开文件,您就可以查找文件中的任意点并在其中写入,它将在该点写入。文件。文件的其他部分将保持不变;如果它们从未被写入,则它们将包含零字节。
因此,如果您对刚刚以w
模式打开的文件(首先将其截断)执行以下操作:
fseek(f, 10, SEEK_SET);
fwrite("abc", 1, 3, f);
rewind(f);
fwrite("1234567890", 1, 10, f);
该文件的内容将是:
1234567890abc
关于c - 用fseek安全地保留空间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40429643/