ファイル操作

最後にバイナリファイルの読み込み操作を見ていきます。

読み込み処理の例題

この例題では
asset/data.bin を開き10個の整数値を読み込んでいく
という事を行います。

大まかな手順は下記のとおりです。

  1. fopen_s 関数で指定したファイルを指定したモードで開き、変数fpで操作できるようにする
  2. fread 関数で指定した型のサイズを指定した個数分読み込んで、コンソールに表示する
  3. fclose 関数でファイルを閉じる
#include 

// エントリー関数
int main(void)
{
    // ファイル構造体を扱うポインタ変数宣言
    FILE* fp = NULL;

    // バイナリデータを読み込む為、 モードに「b」を付け加える
    if (0 == fopen_s(&fp, "asset/data.bin", "rb"))
    {
        // int 型の整数値を10個読み込む
        int data[10] = { };
        fread(data, sizeof(int), 10, fp);
        // 読み込んだ内容をコンソールに表示する
        for (int i = 0; i < 10; ++i)
        {
            printf("%d ", data[i]);
        }

        fclose(fp);

    }
    else
    {
        printf("ファイルがありません");
    }

    return 0;
}

順にみていきましょう。

 

①fopen_s 関数で指定したファイルを指定したモードで開き、変数fpで操作できるようにする

下記コードがその個所となります。

    // ファイル構造体を扱うポインタ変数宣言
    FILE* fp = NULL;

    // バイナリデータを読み込む為、 モードに「b」を付け加える
    if (0 == fopen_s(&fp, "asset/data.bin", "rb"))

バイナリデータを読み込む為、モードが「rb」になっている事に注目してください。

 

②fread 関数で指定した型のサイズを指定した個数分読み込んで、コンソールに表示する

下記コードがその個所となります。

        // int 型の整数値を10個読み込む
        int data[10] = { };
        fread(data, sizeof(int), 10, fp);
        // 読み込んだ内容をコンソールに表示する
        for (int i = 0; i < 10; ++i)
        {
            printf("%d ", data[i]);
        }

fread 関数で読み込みたいデータの単体のデータサイズと個数を指定して、格納先の変数に設定していきます。
読み込みの開始位置は、変数fpで制御されており、
読み取りが行われると、読み取った分だけ開始位置を進めてくれます。

バイナリデータである為、読み込まれたデータが何を意味するのかは、
そのバイナリデータを作成した(書き込んだ)人にしか理解できない内容になっています。
テキストファイルのフォーマット指定読み込みと同じく、
データフォーマット(「何バイト目から何バイト分が何の情報を指すのか」等)を
理解して利用しなければならない事に注意してください。

戻り値は読み込んだデータの個数となっています。

③ fclose 関数でファイルを閉じる

下記コードがその個所となります。

        fclose(fp);

ファイルは使い終わると必ず fclose で閉じるようにしてください。

 

1 2 3 4 5

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です