ファイル内を自由に移動して読み書きする方法。
既存のファイルの場合、ファイルモード"r+b"で開けばよい。
そして、fgetposで位置を記憶し、fsetposで移動する。
#includeint main() {
FILE *fp;
fp = fopen("a", "wb");
int n = 1;
fwrite(&n, 1, sizeof(n), fp);
fclose(fp);
fp = fopen("a", "r+b"); // ここで書くとファイルの最初に書かれる
fseek(fp, 0, SEEK_END); // ファイルの最後に
fpos_t pos;
fgetpos(fp, &pos); // 位置を記憶しておく
n = 2;
fwrite(&n, 1, sizeof(n), fp);
fsetpos(fp, &pos); // 元に戻す
n = 3;
fwrite(&n, 1, sizeof(n), fp);
fclose(fp);
}
ただ、「warning C4996: 'fopen' が古い形式として宣言されました。」という警告は気になる。
fopen_sを使えばいいだけのようだ。vc2005では警告が出るが、vc2008では出ない。