続いてバイナリファイルの書き込み操作を見ていきます。
書き込み処理の例題
この例題では
asset/data.bin に10個の整数値を書き込んでいく
という事を行います。
大まかな手順は下記のとおりです。
- fopen_s 関数で指定したファイルを指定したモードで開き、変数fpで操作できるようにする
- fwrite 関数で指定した整数値を指定した個数分書き込む
- fclose 関数でファイルを閉じる
#include
// エントリー関数
int main(void)
{
// ファイル構造体を扱うポインタ変数宣言
FILE* fp = NULL;
// バイナリデータを書き込む為、 モードに「b」を付け加える
if (0 == fopen_s(&fp, "asset/data.bin", "wb"))
{
// int 型の整数値を10個書き込む
int data[10] = { 1,2,3,4,5,6,7,8,9,10 };
fwrite(data, sizeof(int), 10, fp);
fclose(fp);
}
else
{
printf("ファイルを開けませんでした");
}
return 0;
}
順にみていきましょう。
①fopen_s 関数で指定したファイルを指定したモードで開き、変数fpで操作できるようにする
下記コードがその個所となります。
// ファイル構造体を扱うポインタ変数宣言
FILE* fp = NULL;
// バイナリデータを書き込む為、 モードに「b」を付け加える
if (0 == fopen_s(&fp, "asset/data.bin", "wb"))
バイナリデータを書き込む為、モードが「wb」になっている事に注目してください。
②fwrite 関数で指定した整数値を指定した個数分書き込む
下記コードがその個所となります。
// int 型の整数値を10個書き込む
int data[10] = { 1,2,3,4,5,6,7,8,9,10 };
fwrite(data, sizeof(int), 10, fp);
fwrite 関数は書き込みたいデータの単体のデータサイズと個数を指定してファイルに書き込みます。
書き込みの開始位置は、変数fpで制御されており、
書き込みが行われると、書き込んだ分だけ開始位置を進めてくれます。
戻り値は書き込んだデータの個数になっています。
③ fclose 関数でファイルを閉じる
下記コードがその個所となります。
fclose(fp);
ファイルは使い終わると必ず fclose で閉じるようにしてください。