ファイルの位置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でその奇妙な動作を引き起こす可能性があるのは何ですか?