3 付録

3.1 特別なファイル(標準入力、標準出力、標準エラー出力)

C言語でファイルを取り扱う場合、以下のようにプログラムを作成しなくてはならない。
  1. ファイルポインター用の変数をFILE型で宣言する。
  2. ファイルをオープンする。
  3. ファイルの読み書き
  4. ファイルのクローズ
しかし、特別な3個のファイル(標準入力、標準出力、標準エラー出力)は、いきなりファ イルの読み書きができる。コンソール入力で述べたように、通常、標準入力はキーボード、 標準出力はディスプレイを示す。C言語では(UNIXでは)、キーボードやディスプレイもファ イルとして扱われ、読み書きする。それどころか、すべてのデバイスがファイルとして扱 われる。そうすると、シンプルな取り扱いが可能となる。

これら、特別な3個のファイルについて、表1にまとめる。

表 1: 標準入出力ファイル
ファイル ファイルポインター デバイス(通常)
標準入力 stdin キーボード
標準出力 stdout ディスプレイ
標準エラー出力 stderr ディスプレイ

fscanf()関数でファイルポインターとしてstdinを指定した場合、 scanf()と同じ動作をする。一方、fprintf()関数でファイルポインターとして stdoutを指定した場合、printf()と同じ動作をする。これを上手に使うと、プ ログラムのデバッグのときに便利である。

最後に標準エラー出力について述べる。標準エラー出力とは、エラーが発生した場合のメッ セージなどを出力先のことを言う。プログラム中で処理にエラーが発生した場合、そのメッ セージの出力先に指定する。printf()関数を使うよりも、fprintf()関数でファ イルポインターとしてstderrを指定した場合、printf関数と同じ動作をする。

fprintf(stderr, "ファイルの読み込みに失敗しました\n");

こうするとエラーメッセージのみ、リダイレクトすることができプログラムの保守性が上 がります。本当は、教科書p.309に書かれているperror()関数を使うのがもっとも良 いだろう。



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成17年7月10日


no counter