グレインの備忘録

プログラミング関係とかをつらつらと。

バイナリモードのfseekとfwriteの挙動

バイナリファイルで一旦fwriteした後に前方へfseekして、もう一回fwriteすると上書きされるのか挿入されるのかたまに忘れるのでメモっとく。

結論から言うとfseekしてからfwriteすると元のデータは上書きされる。(まあ当たり前か)

例えば、新規ファイルについて

int data = 0x12345678;
fwrite(&data, 4, 1, fp);
fseek(fp, 2, SEEK_SET);
data = 0x90ABCDEF;
fwrite(&data, 4, 1, fp);

みたいにすると、ファイルの中身は

78 56 EF CD AB 90

の6バイトになる。