【发布时间】:2016-10-13 22:32:34
【问题描述】:
在 Windows 上,WriteFile() 函数有一个名为 lpOverlapped 的参数,可让您指定写入文件的偏移量。
我想知道,有没有类似的 fwrite() 跨平台?
我看到,如果使用rb+ 标志打开文件,我也许可以使用fseek() 写入特定偏移量。我的问题是 - 这种方法是否等同于重叠的WriteFile(),它会在所有平台上产生相同的行为吗?
背景
我需要这个的原因是因为我正在将阻塞的压缩数据流写入文件,并且我希望能够从文件中加载特定的块并能够解压缩它。因此,基本上,如果我跟踪块在文件中的开始位置,我可以加载块并以更有效的方式解压缩它。我知道可能有更好的方法可以做到这一点,但我需要这个解决方案来实现一些向后兼容性。
【问题讨论】:
-
在
fwrite之前使用fseek。 -
fwrite()是 C stdio,而不是 C++ I/O。