在Windows上, WriteFile()
函数具有一个称为lpOverlapped
的参数,该参数可让您指定写入文件的偏移量。
我想知道,是否有等效的fwrite()
跨平台?
我看到,如果使用rb+
标志打开了文件,则可以使用fseek()
写入特定的偏移量。我的问题是-这种方法是否等同于重叠的WriteFile()
,并且在所有平台上都会产生相同的行为吗?
背景
我之所以需要它,是因为我正在将阻塞的压缩数据流写入文件,并且希望能够从文件中加载特定的块并能够对其进行解压缩。因此,基本上,如果我跟踪该块在文件中的开始位置,则可以加载该块并以更有效的方式对其进行解压缩。我知道可能有更好的方法可以执行此操作,但是我需要此解决方案以实现向后兼容。
最佳答案
假设您可以使用POSIX函数,而不仅仅是使用C或C++标准库中的内容,那么解决方案是 pwrite
(又名:定位写入)。
ssize_t rc = pwrite(file_handle, data_ptr, data_size, destination_offset);
关于c++ - WriteFile重叠和fwrite等效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032106/