ストリームを使う関数

stdio.hの中には、標準入力を管理するstdin と、 標準出力を管理するstdoutが宣言されています。
これらは入力や出力の流れを管理するもので ストリームと呼ばれます。

そして、このストリームを管理する型が FILE 型になっています。

一般には、ファイル操作を含めたストリームを管理するための構造体を、 typedefで、 FILE の名前に定義しています。
つまり、stdinstdoutは、 キー入力用と画面表示用で、 すでにオープン済みの FILE 型データを指し示すポインタ型になっています。

stdio.hの中では、これら(FILE *)型を引数にする次の関数が用意されています。 同時にその引数がなく、 内部でstdinstdoutのストリームを使う関数が用意されています。
以下にそのいくつかを紹介します。

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行の入出力で、似ている処理です。