シリアライズ第1回 〜データをファイルに保存&読み込み〜


目次に戻る


「データを保存とかってどうやるの?」と質問が来たので、変数の内容をファイルに保存しておいたり、保存したデータから変数の値を読み込む方法の一つ「シリアライズ」について軽く説明したいと思います。
 
まず、変数の内容をファイルに保存する方法を二つ紹介します。一つはテキスト形式による保存。もう一つはバイナリ形式による保存です。それぞれ一長一短があります。
テキスト形式による保存&読み込み
使用する関数 fopen  ファイルを読み書き可能な状態にする
fclose  使用し終わったファイルを閉じる
fprintf ファイルにデータを書き込む
fgets  ファイルからデータを1行分だけ読み込む
sscanf  文字列を解析して変数に値を代入する
長所 作成されたファイルはテキストファイルなので、メモ帳などで内容を確認できデータの内容を手で書き換える事が容易にできる。保存の仕方にもよるが、基本的にファイルに書き込まれているデータがどういった内容なのかわかりやすい。
異機種(OS)間でのファイルの互換性を保ちやすい
短所 データファイルのサイズが大きい。
sscanfには少しクセがあるので、ファイルを読み書きする部分のプログラムが少し複雑になる。
 
バイナリ形式による保存&読み込み
使用する関数 fopen  ファイルを読み書き可能な状態にする
fclose  使用し終わったファイルを閉じる
fwrite  ファイルに変数の内容を書き込む
fread  ファイルからデータを読み込み変数に書き込む
長所 ファイルサイズが小さい。
データの読み書きの部分のプログラムが単純。
短所 ファイルに書き込まれたデータを調べたり変更したりする場合には専用のプログラムを作る必要がある。
異機種(OS)間でのファイルの互換性を保ちづらい。
ファイルにどういったデータが書き込まれているのかわかりづらい。
どの形式でデータを保存するかは悩むところですが、グラフィック、音声、等のいわゆるサイズの大きいデータや、ゲームのハイスコアデータやモンスターのパラメータデータ等一般ユーザに中身を見られたり書き換えられたくない物はバイナリ形式で保存するのが普通です。逆にエディタのウィンドウの大きさ、フォントの種類等の各種設定ファイルはテキスト形式で保存した方が後で簡単に内容を確認、変更できるので便利です。もちろん、これはあくまで私がそう思っているだけです。

目次に戻る