6 付録

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

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

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

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

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

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

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

見た目の動作はprintf関数と同じ動作をする.

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



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年6月27日


no counter