stdio.hの中には、標準入力を管理するstdin と、
標準出力を管理するstdoutが宣言されています。
これらは入力や出力の流れを管理するもので
ストリームと呼ばれます。
そして、このストリームを管理する型が FILE 型になっています。
一般には、ファイル操作を含めたストリームを管理するための構造体を、
typedefで、 FILE の名前に定義しています。
つまり、stdin やstdoutは、
キー入力用と画面表示用で、
すでにオープン済みの FILE 型データを指し示すポインタ型になっています。
stdio.hの中では、これら(FILE *)型を引数にする次の関数が用意されています。
同時にその引数がなく、
内部でstdin やstdoutのストリームを使う関数が用意されています。
以下にそのいくつかを紹介します。
FILE * を引数にする関数 | 内部で標準ストリームを使っている。(参考) |
fprintf(stdout ,"%d", 123); |
printf("%d", 123); |
fscanf(stdin , "%d" , & v); |
scanf("%d" , & v); |
fputc('A', stdout); |
putchar( 'A' ); |
c = fgetc(stdin); |
c = getchar(); |
上記4行の、左右は、全く同じ処理です。(右は、左の関数を使って作られます) | |
---|---|
fputs("ABC", stdout); |
puts( "ABC" ); |
char buf[256]; fgets(buf, sizeof(buf), stdin); |
char buf[256]; gets(buf); |
上記2行の、左右は、文字列1行の入出力で、似ている処理です。 |