私はCモジュールを書いていますが、これまでに見たことのない興味深い問題に直面しています。
// Many other operations before this point
fseek(samples_file, 0, SEEK_SET);
printf("ftell A1 %llu\n", ftell(samples_file));
count = fwrite(channel_buffer+chan_type.size*set_index, 1, chan_type.size, samples_file);
printf("count %llu\n", count);
printf("ftell A2 %llu\n", ftell(samples_file));
// Many more operations to come after this point
モジュールを実行すると、次のような印刷出力が表示されます。
ftell A1 0
count 8
ftell A2 6018
ファイルポインタをファイルの先頭に設定しました。データを書き込むときは、目的の位置にデータを書き出してから、書き込まれたバイト数(この場合は8)でファイルの位置をインクリメントする必要があります。しかし、私がftellを実行すると、位置が突然6018(ファイルの元のサイズに8を加えたもの)にジャンプしたようです。
なぜこれが発生し、どうすればこの動作を防ぐことができますか?