fsetposの使い方

ファイル内を自由に移動して読み書きする方法。
既存のファイルの場合、ファイルモード"r+b"で開けばよい。
そして、fgetposで位置を記憶し、fsetposで移動する。


#include

int 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では出ない。