我试图在文件中的位置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;
Run Code Online (Sandbox Code Playgroud)
cacheStream以"ab"打开.输出是:
fseek returns 0
ftell 4
fwrite returns 1
ftell 2822716
Run Code Online (Sandbox Code Playgroud)
该值未被覆盖,而是写在文件末尾.什么可能导致与fseek的奇怪行为?