読者です 読者をやめる 読者になる 読者になる

fopen

//新規作成書き込み
fopen("hoge.dat","wb");

//追記書き込み
fopen("hoge.dat","ab");

この2つ、"hoge.dat"が存在しなければまったく同じ挙動をすると思っていたんですが、違いました。
ゲームのバイナリデータはアラインメントをそろえないといけないので、fseekを使ってファイルポインタをずらしてデータ書き込むようにしていたんですが、ある日ファイルの後方追加する必要が出たので"ab"を使うようにしたらfseekの挙動が"wb"と違っててハマりました。
"wb"の場合はちゃんと0を埋めてくれるのですが、"ab"は移動そのものが失敗するみたいです。
まぁどちらにしてもVS8の仕様のような気もするので、fseekで0が埋まることを期待したらいかんということでしょうか。