どのような言語でもファイル処理の流れは似ている。まず初めにファイルを開
いて(open)、その後処理を行い、最後に閉じる(close)のである。その流れを
図
7に示す。
ストリームを制御するために必要な情報が記述されている。これは変数の宣言と同じで、次のように書く。とりあえず、ファイルを使うときに必要な変数と思ってほしい。
FILE *ファイルポインター名;
注意すべきことは、
- 変数の型名は、すべて大文字で「FILE」と書く。
- ファイルポインター名の前に、アスタリスク「*」をつける。
である。
ファイルを使うときには、最初にそれをオープンする必要がある。
ファイルポインター名 = fopen("ファイル名","モード");
ファイル名は、絶対パスや相対パスで記述することができる。また、ただ単に
ファイル名のみがかかれた場合、その実行ファイルがあるディレクトリーとな
る。モードは、バイナリーとテキストがある。テキストの場合について、表
1に示す。いろいろなモードがあるが、とりあえず
は、読み込み
(r)と書き込み
(w)を理解しておけばよい。
表 1:
テキストモードのオープン
モード |
処理 |
ファイルがないとき |
ファイルがあるとき |
r |
読み込み(read) |
NULLを返す |
正常処理 |
w |
書き込み(write) |
新規作成 |
前のファイルは破棄 |
a |
追加書き込み(append) |
新規作成 |
前の内容の後に追加 |
r+ |
書き込み(更新) |
NULLを返す |
正常処理 |
w+ |
読み込み(更新) |
新規作成 |
前の内容は破棄 |
a+ |
追加読み書き |
新規作成 |
前の内容の後に追加 |
使い終わったならば、クローズしなくてはならない。
fclose(ファイルポインター名);
ファイル出力は、
printf文とほとんど同じである。
fprintf(ファイルポインター, 出力書式, 引数並び);
ファイル入力は、
scanf文とほとんど同じである。
fscanf(ファイルポインター, 入力書式, &引数並び);
UNIXには、ファイルポインターの指定やオープン、クローズ処理なしで使える
ファイルがある。それを、表
2に示す。
「
fscanf」や「
fprintf」のファイルポインター名を書くところに、
これらを書くと、キーボード入力やディスプレイ出力になる。上手に使えば、
便利である。
表 2:
特殊なファイル
ファイル |
ファイルポインター |
デバイス |
標準入力 |
stdin |
キーボード |
標準出力 |
stdout |
ディスプレイ |
標準エラー出力 |
stderr |
ディスプレイ |
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年11月9日