我试图覆盖文件中位置 4 的 4 个字节,但 fseek 似乎不起作用。
我的代码:
int r = fseek(cacheStream, 4, SEEK_SET);
std::cout << "fseek returns " << r << std::endl;
std::cout << "ftell " << ftell(cacheStream) << std::endl;
r = fwrite(&chunckSize, sizeof(uint32_t), 1, cacheStream);
std::cout << "fwrite returns " << r << std::endl;
std::cout << "ftell " << ftell(cacheStream) << std::endl;
cacheStream 以“ab”打开。输出是:
fseek returns 0
ftell 4
fwrite returns 1
ftell 2822716
该值未被覆盖,而是被写入文件末尾。什么可能导致 fseek 出现这种奇怪的行为?