C言語入門|14章のまとめ

ファイル入出力をひととおり身につけよう

ここまででできるようになったこと

14章では、C言語でプログラムの外にあるデータを扱うための「ファイル入出力」について学んできました。
画面に表示するだけのプログラムから一歩進んで、データを保存し、再利用するための技術がぎゅっと詰まった章です。

最初は少し難しく感じたかもしれませんが、読み進めていくうちに、

  • ファイルを開く。
  • データを書き込む。
  • データを読み取る。
  • 必要なら途中の位置に移動する。

といった流れが、自然に見えてきたのではないでしょうか。
ここでは、14章で登場した重要な考え方と命令を、あらためて整理していきます。

ファイルの種類を理解する

ファイルは大きく分けて、テキストファイルバイナリファイル の2種類があります。

種類特徴代表例
テキストファイルすべて文字コードとして解釈できるtxt, csv, ソースコード
バイナリファイル数値や構造体など、そのままの形で保存されるdat, exe, 画像

テキストファイルは人が読めますが、バイナリファイルは人の目では意味がわかりません。
その代わり、高速で正確なデータ保存ができるのが強みです。

14章では、この両方を状況に応じて使い分ける方法を学びました。

ストリームという考え方

C言語では、外部とのデータのやり取りはすべて ストリーム を通して行われます。

ストリームとは、「データが流れる一本の通り道」のようなものです。

対象ストリームの例
ファイルfopen で開いたファイル
キーボード標準入力
画面標準出力
ネットワークソケット通信

printf や scanf も、実はストリームを使って動いています。
ファイル入出力は、その仕組みをより意識的に扱う練習だった、と考えると理解しやすいですね。

ファイル操作の基本ルール

ファイル操作には、いくつかの大切な約束があります。

内容説明
ファイルを開くfopen を使って FILE 構造体を取得する。
ファイルを閉じるfclose を必ず呼び出す。
読み書き位置自動で進むが、必要なら操作できる。

fopen で開いたファイルは、使い終わったら必ず fclose で閉じます。
これは「後片付け」のようなもので、忘れるとトラブルの元になります。

シーケンシャルアクセスとランダムアクセス

ファイルの読み書き方法には、2つの考え方があります。

種類特徴
シーケンシャルアクセス先頭から順に読み書きする。
ランダムアクセス任意の位置に移動して読み書きする。

通常の読み書きはシーケンシャルアクセスで十分です。
一方、fseek や ftell を使えば、必要な場所だけを狙って読み書きできます。

特にバイナリファイルでは、ランダムアクセスが強力な武器になります。

データ量に応じた読み書き関数

14章では、扱うデータ量に応じて、さまざまな関数を学びました。

方法読み取り書き込み
1バイト単位fgetcfputc
1行・文字列単位fgetsfputs
サイズ指定freadfwrite

それぞれの関数は、
「どこで終わりを判断するか」
「どれくらいの量を扱うか」
という考え方が異なります。

場面に応じて正しい関数を選べるようになると、プログラムの表現力が一気に広がります。

章のまとめとして

14章を通して、C言語のファイル入出力の基本から応用までを一通り体験しました。

  • データを保存できるようになった。
  • バイナリで効率よく扱えるようになった。
  • ファイルの位置を意識できるようになった。

これらは、実用的なプログラムを書くうえで欠かせない土台です。

ここで学んだ知識を使って、
設定ファイル、セーブデータ、ログ出力など、
ぜひ自分なりのプログラムを作ってみてください。