シリアライズ第3回 〜バイナリ形式による保存&読み込み〜


目次に戻る


本日はテキスト形式による変数値の保存、読み込み方法を紹介します。
バイナリ形式で変数値をファイルに保存する方法
/*
 * c:\\work\data2.bin というファイルに変数の値が保存されます。
 */
#include <stdio.h>

#define FILENAME    "c:\\work\\data2.bin"
 
int main()
{
    char data1 = 100;
    int data2 = 200;
    FILE *fp;        /* ファイル操作で使用する変数 */
 
    /* ファイルを書き込み用にバイナリ形式で開く */
    fp = fopen( FILENAME , "wb" );

    /* ファイルが正常に開けたかチェック */
    if( !fp ){
        printf("ファイルが開けませんでした\n");
        return -1;
    }

    /* data1とdata2の内容を保存する */
    fwrite( &data1 , sizeof( data1 ) , 1 , fp );
    fwrite( &data2 , sizeof( data2 ) , 1 , fp );

    /* ファイルを閉じる */
    fclose( fp );

    return 0;
}   

 
バイナリ形式のファイルから変数値を読み込む方法
/*
 * c:\work\data2.bin というファイルからデータを読み込みます
 */
#include <stdio.h>

#define FILENAME    "c:\\work\\data2.bin"

int main()
{
    char data1;
    int data2;
    FILE *fp;   /* ファイル操作用に使用する変数 */

    /* ファイルを読み込みようにバイナリ形式で開く */
    fp = fopen( FILENAME , "rb" );

    /* ファイルが正常に開けたかチェックする */
    if( !fp ){
        printf("ファイルが見つかりませんでした\n");
        return -1;
    }

    /* ファイルからデータを読み込む */
    fread( &data1 , sizeof( data1 ) , 1 , fp );
    fread( &data2 , sizeof( data2 ) , 1 , fp );
 
    /* 読み込んだ結果を表示 */
    printf("data1 = %d , data2 = %d\n",data1,data2 );

    return 0;
}

バイナリ形式のファイルは変数の値をそのままベタで保存するため、scanfの時のような「これはうまく解析されるかな?」といった心配事がありません。ただし次の点には注意してください。

目次に戻る