4 C言語でのファイル入出力

4.1 ファイル入出力の流れ

どのような言語でもファイル処理の流れは似ている。まず初めにファイルを開 いて(open)、その後処理を行い、最後に閉じる(close)のである。その流れを 図7に示す。
図 7: ファイル処理の流れ。
\includegraphics[keepaspectratio, scale=1.0]{figure/file_shori.eps}

4.2 ファイルポインター

ストリームを制御するために必要な情報が記述されている。これは変数の宣言と同じで、次のように書く。とりあえず、ファイルを使うときに必要な変数と思ってほしい。
     FILE *ファイルポインター名;

注意すべきことは、

である。

4.3 オープンとクローズ

ファイルを使うときには、最初にそれをオープンする必要がある。
     ファイルポインター名 = fopen("ファイル名","モード");
ファイル名は、絶対パスや相対パスで記述することができる。また、ただ単に ファイル名のみがかかれた場合、その実行ファイルがあるディレクトリーとな る。モードは、バイナリーとテキストがある。テキストの場合について、表 1に示す。いろいろなモードがあるが、とりあえず は、読み込み(r)と書き込み(w)を理解しておけばよい。
表 1: テキストモードのオープン
モード 処理 ファイルがないとき ファイルがあるとき
r 読み込み(read) NULLを返す 正常処理
w 書き込み(write) 新規作成 前のファイルは破棄
a 追加書き込み(append) 新規作成 前の内容の後に追加
r+ 書き込み(更新) NULLを返す 正常処理
w+ 読み込み(更新) 新規作成 前の内容は破棄
a+ 追加読み書き 新規作成 前の内容の後に追加

使い終わったならば、クローズしなくてはならない。

     fclose(ファイルポインター名);

4.4 ファイル出力

ファイル出力は、printf文とほとんど同じである。
     fprintf(ファイルポインター, 出力書式, 引数並び);

4.5 ファイル入力

ファイル入力は、scanf文とほとんど同じである。
     fscanf(ファイルポインター, 入力書式, &引数並び);

4.6 特別なファイル

UNIXには、ファイルポインターの指定やオープン、クローズ処理なしで使える ファイルがある。それを、表2に示す。 「fscanf」や「fprintf」のファイルポインター名を書くところに、 これらを書くと、キーボード入力やディスプレイ出力になる。上手に使えば、 便利である。
表 2: 特殊なファイル
ファイル ファイルポインター デバイス
標準入力 stdin キーボード
標準出力 stdout ディスプレイ
標準エラー出力 stderr ディスプレイ


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年11月9日


no counter