C言語 | 高度な機能 | 標準入出力 - fprintf(), fscanf()
コマンドの出力とキーボードの入力は、特別な FILE ストリームとして表現されます。
基本入出力
printf() は標準出力へ書き込み、scanf() は標準入力から読み取ります。標準エラー出力はエラーメッセージ用の別ストリームです。利用者はプログラムを変更せずにストリームをリダイレクトできます。
stdio.h は次のストリームを提供します。
FILE *stdin;
FILE *stdout;
FILE *stderr;
ファイル用の関数でも利用できます。
#include <stdio.h>
int main() {
char chError[0xFF];
fputs("エラーメッセージを入力してください。 >", stdout);
fgets(chError, 0xFF, stdin);
fputs(chError, stderr);
return 0;
}
書式付きのストリーム入出力には fprintf() と fscanf() を使います。
int fprintf(FILE *stream, const char *format, ...);
int fscanf(FILE *stream, const char *format, ...);
ストリーム引数を除けば、printf() と scanf() と同様に動作します。
#include <stdio.h>
int main() {
char chSelect;
fprintf(stdout, "出力先を選択してください。 o/e>");
fscanf(stdin, "%c", &chSelect);
switch (chSelect) {
case 'e':
case 'E':
fprintf(stderr, "Kitty on your lap\n");
break;
case 'o':
case 'O':
fprintf(stdout, "Kitty on your lap\n");
break;
}
return 0;
}
stdin、stdout、stderr の代わりにファイルストリームを渡すと、同じ書式付き入出力をファイルに適用できます。