STDIO(3)

名前
stdio - 標準入出力ライブラリ関数

書式
#include <stdio.h>

FILE *stdin;
FILE *stdout;
FILE *stderr;

説明
標準入出力ライブラリはバッファリングされた簡単かつ効果的な ストリーム入出力インターフェースを提供する。 入力と出力は論理データストリームに割り付けられ、 入出力の物理的な特徴は隠されてしまう。 このライブラリに属する関数とマクロを以下に挙げる。 より詳しい情報は個々のmanページから得ることができる。

ファイルを 開く ことによって、 ストリームは外部ファイル（通常は物理デバイス）に連結される。 この操作には新しくファイルを作成することも含まれる。 既存のファイルと同じ名前のファイルを新たに作ると、 もとのファイルの中身が捨てられてしまう。 ファイルが位置指定のリクエストをサポートしている場合 （ディスクファイルなどが相当する。逆の例としては端末があげられる）、 そのストリームに連結された ファイル位置のインディケーター は、追加モードで開かれない限り ファイルの先頭(ゼロバイト目)に位置する。 追加モードを使用した場合には、 ファイル位置のインディケーターはend-of-file(ファイルの最後)に置かれる。 ファイル位置のインディケーターは、 連続的な読み書きと位置決めリクエストによって維持される。 全ての入力は、連続した fgetc(3) 関数の呼び出しによって、その文字が読まれたかのようの生じる。 一方、すべての出力は、全ての文字が fputc(3) 関数への連続的な呼び出しによって読まれたかのように行われる。

ファイルを 閉じる ことによって、そのファイルはストリームから切り離される。 出力ストリームは、 そのストリームがファイルから切り離される前に書き込まれる。 （書き込まれていないすべてのバッファの内容がホスト環境に転送される） FILE オブジェクトへのポインタの値は、 ファイルを閉じた後では不確定になる（ゴミになってしまう）。

同じプログラムの再実行または他のプログラムの実行によって、 （もし、もとのファイルの先頭に再配置されることが可能ならば） もとのファイルが再び開かれて内容が修正または変更されることがある。 main関数がもとの呼び出し側に値を返したり exit(3) 関数が呼ばれた場合、 プログラムの終了の前に 現在開いているすべてのファイルは閉じられる (その結果、すべての出力ストリームは書き込まれる)。 abort(3) といったプログラムを停止する他の方法を用いた場合には、 ファイルが正しく閉じられる保証はない。

プログラムの実行時には、３個のテキストストリームが 予め定義されている。 これらは明示的に開く必要がない。 それは、 — standard input （標準入力、 通常の入力を読み取るため）、— standard output （標準出力、通常の出力を書き込むため）、そして standard error （標準エラー出力、 診断出力を書き込むため）である。 これらのストリームは、 stdin、stdout そして、 stderr と短縮して表現されている。 標準エラーストリームは 完全にバッファされているのではない。 標準入力ストリームと標準出力ストリームは、ストリームが インタラクティブなデバイスを参照していない場合のみ、 完全にバッファリングされている。

端末デバイスを参照する出力ストリームは、 デフォルトで常に行単位でバッファリングされている。 ただし、端末デバイスを参照している入力ストリームが読み込まれるときには、 そのプロセスが使用しているストリームでバッファリングされている 出力は書き込まれる。 出力端末に行の一部を書き込んだ後で大量の計算が行われる場合、 出力が行われるように、計算に取りかかる前に標準出力に対して fflush(3) を実行する必要がある。

stdio ライブラリは libc ライブラリの一部であり、ルーチンは コンパイラー cc(1) と pc(1) によって必要な時に自動的に読み込まれる。 manページにある 書式 の節は、どのincludeファイルが使用されるのか、 関数のコンパイラー宣言がどのように見えるか、 どのような外部変数が関係するのかを示している。

以下はマクロとして定義されている。 これらの名前を別の種類の関数として使用する場合には、はじめに #undef を用いて現在の定義を消さなければならない。 BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, SEEK_END, SEEK_SET, SEE_CUR, TMP_MAX, clearerr, feof, ferror, fileno, fropen, fwopen, getc, getchar, putc, putchar, stderr, stdin, stdout. マクロ関数の関数版として、 feof, ferror, clearerr, fileno, getc, getchar, putc, そして putchar がある。 マクロの定義が明示的に消去されている場合には、 これらが使用されるだろう。

関連項目
open(2), close(2), read(2), write(2)

バグ
標準のバッファリングされた関数は、 ある種の他のライブラリやシステム関数, 特に vfork と abort と、うまく共存できない。 （これは Linuxの場合ではないだろう。）

準拠
stdio ライブラリはANSI C3.159-1989 (``ANSI C'')に準拠している。

関数のリスト

関数  説明

clearerr
    ストリームの状態の確認とリセット

fclose
    ストリームを閉じる

fdopen
    ストリームを開く関数

feof
    ストリームの状態の確認とリセット

ferror
    ストリームの状態の確認とリセット

fflush
    ストリームに書き込む

fgetc
    次の文字または語を入力ストリームから獲得する

fgetline
    ストリームから行を獲得する

fgetpos
    ストリームの再配置

fgets
    ストリームから行を獲得する

fileno
    ストリームの状態の確認とリセット

fopen
    ストリームを開く関数

fprintf
    整形された出力変換関数

fpurge
    ストリームに書き込む

fputc
    文字または語をストリームに出力する

fputs
    行をストリームに出力する

fread
    バイナリーストリーム入出力

freopen
    ストリームを開く関数

fropen
    ストリームを開く

fscanf
    書式付き入力変換

fseek
    ストリームの再配置

fsetpos
    ストリームの再配置

ftell
    ストリームの再配置

fwrite
    バイナリーストリーム入出力

getc
    次の文字または語を入力ストリームから獲得する

getchar
    次の文字または語を入力ストリームから獲得する

gets
    行を入力ストリームから獲得する

getw
    次の文字または語を入力ストリームから獲得する

mktemp
    一時ファイル(テンポラリファイル)の名前を作る(特定のテンポラリファイルを作る)

perror
    システムエラーメッセージ

printf
    書式付き出力変換

putc
    文字または語をストリームに出力する

putchar
    文字または語をストリームに出力する

puts
    行をストリームに出力する

putw
    文字または語をストリームに出力する

remove
    ディレクトリ(ファイル)を削除する

rewind
    ストリームの再配置

scanf
    書式付き入力変換

setbuf
    ストリームバッファリングの操作

setbuffer
    ストリームバッファリングの操作

setlinebuf
    ストリームバッファリングの操作

setvbuf
    ストリームバッファリングの操作

sprintf
    書式付き出力変換

sscanf
    書式付き入力変換

strerror
    システムエラーメッセージ

sys_errlist
    システムエラーメッセージ

sys_nerr
    システムエラーメッセージ

tempnam
    テンポラリファイルの操作

tmpfile
    テンポラリファイルの操作

tmpnam
    テンポラリファイルの操作

ungetc
    入力ストリームへ1文字戻す。

vfprintf
    書式付き出力変換

vfscanf
    書式付き入力変換

vprintf
    書式付き出力変換

vscanf
    書式付き入力変換

vsprintf
    書式付き出力変換

vsscanf
    書式付き入力変換