如果可以保证在查找后仍有数据要写入,使用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上运行,但是其他平台呢?有什么需要注意的地方吗?

最佳答案

是的,这很好。只要您以ww+模式(而不是aa+)打开文件,您就可以查找文件中的任意点并在其中写入,它将在该点写入。文件。文件的其他部分将保持不变;如果它们从未被写入,则它们将包含零字节。

因此,如果您对刚刚以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/

10-13 03:32