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.395に書かれているperror()関数を使うのがもっとも良
いだろう.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成19年7月4日