STDIO(3) | FreeBSD Library Functions Manual | STDIO(3) |
名称
stdio — 標準入出力ライブラリ関数ライブラリ
Standard C Library (libc, -lc)解説
標準 I/O ライブラリは、単純かつ効率的なバッファを用いたストリーム I/O インタフェースを提供します。入力と出力は、論理的データストリームにマップされ、物理的な I/O 特性は、隠されます。関数およびマクロは、次にリストされます。より多くの情報は、個別のマニュアルページから得られます。ストリームは、ファイルを オープン することによって外部ファイル (物理的なデバイスかもしれない) に関連づけられます。それは、新しいファイルを作成することを含んでいます。存在するファイルを作成すると、その前の内容は、破棄されます。ファイルが位置付け要求 (端末ではなく、ディスクファイルのような) をサポートすることができる場合は、ファイルが追加モードでオープンされていない限り、ストリームに関連づけられたファイル位置指示子は、ファイルの先頭 (バイト 0) に位置付けされます。追加モードが使われる場合は、位置指示子は、ファイルの終りに置かれます。位置指示子は、後の読み込み、書き込み、位置付け要求によって維持されます。すべての入力は、あたかも文字が fgetc(3) 関数の連続的な呼び出しによって読み込まれたかのように行なわれます。すべての出力は、あたかもすべての文字が fputc(3) 関数の連続的な呼び出しによって書き込まれたかのように行なわれます。
ファイルは、そのファイルをクローズすることによりストリームから分離されます。出力ストリームは、ファイルから分離される前にフラッシュされます (書き込まれなかったバッファの内容は、ホスト環境に転送されます)。 FILE オブジェクトへのポインタの値は、ファイルをクローズした後は、不定 (ゴミ) になります。
ファイルは、同じまたは別のプログラムの実行によって後に続いて最オープンされるかもしれません。そして、(先頭に最位置付けできる場合は) その内容を再利用するか修正できます。 main 関数が呼び出し元に返るか、または exit(3) 関数が呼び出された場合には、プログラムが終了する前に、オープンされている全てのファイルは、クローズされます (従って、すべての出力ストリームは、フラッシュされます)。それ以外の方法でプログラムを終了したときは、ファイルが適切にクローズされないかもしれないし、バッファリングされた出力が失われるかもしれません。特に、 _exit(2) は、stdio ファイルをフラッシュしません。どちらも、シグナルによって exit を行ないません。以前の実装では、行っていませんでしたが、バッファは、POSIX によって要求されるように abort(3) によってフラッシュされます。
この実装では、“テキスト”と“バイナリ”のストリームを区別しません。実際には、すべてのストリームは、バイナリです。いかなるストリームでも、変換は、行われませんし、余分のパディング (詰め物を詰める) は、現れません。
プログラムの開始時には、次の 3 つのストリームがあらかじめ定義され、それらを明示的にオープンする必要はありません。
- 標準入力 (習慣として入力読み込み用)
- 標準出力 (習慣として出力書き込み用)
- 標準エラー出力 (診断出力書き込用)
これらのストリームは、 stdin, stdout そして stderr と略記されます。初期状態では、標準エラーストリームは、バッファリングされていません。標準入力および出力ストリームは、ストリームが isatty(3) 関数で判定されるような対話型または“端末”デバイスへの参照でない場合かつその場合に限り、完全にバッファリングされます。実際に、端末デバイスを参照する新たにオープンされたすべてのストリームは、行バッファをデフォルトにし、そのようなストリームへの保留された出力は、そのような入力ストリームが読み込まれたときは、常に自動的に書き込まれます。これは、“本当の読み込み”のために適応されることに注意してください。既存のバッファリングされたデータは、読み込み要求が満たすことができる場合、自動的なフラッシュは、生じません。このような場合、または出力端末に行の一部をプリントした後で大量の計算が行なわれた場合、計算が出力が現れるように、停止する前に標準出力を fflush(3) する必要があります。代わりに、これらのデフォルトは、 setvbuf(3) 関数によって修正することでも可能です。
stdio ライブラリは、ライブラリ libc の一部であり、ルーチンは、C コンパイラによって必要に応じて自動的にロードされます。次のマニュアルの書式のセクションでは、どのインクルードファイルが使用されるか、関数のためのコンパイラの宣言がどのような外見をしているか、どの外部変数が対象となっているかを示します。
次のは、マクロとして定義されています。これらの名称は、現在の定義を最初に #undef で削除してからでないと再使用できません。 BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_ctermid, L_cuserid, L_tmpnam, NULL, P_tmpdir, SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, clearerr, clearerr_unlocked, feof, feof_unlocked, ferror, ferror_unlocked, fileno, fileno_unlocked, fropen, fwopen, getc, getc_unlocked, getchar, getchar_unlocked, putc, putc_unlocked, putchar, putchar_unlocked, stderr, stdin と stdout。マクロ関数 clearerr, clearerr_unlocked, feof, feof_unlocked, ferror, ferror_unlocked, fileno, fileno_unlocked, getc, getc_unlocked, getchar, getchar_unlocked, putc, putc_unlocked, putchar, と putchar_unlocked には、関数バージョンが存在し、マクロ定義が明示的に削除された場合は、それが使われます。
規格
stdio ライブラリは、 ISO/IEC 9899:1999 (“ISO C99”) に適合しています。関数一覧
関数 | 説明 |
asprintf | 書式付き出力変換 |
clearerr | ストリーム状態のチェックとリセット |
dprintf | 書式付き出力変換 |
fclose | ストリームをクローズする |
fdopen | ストリームをオープンする関数 |
feof | ストリーム状態のチェックとリセット |
ferror | ストリーム状態のチェックとリセット |
fflush | ストリームをフラッシュ |
fgetc | 入力ストリームから次の文字またはワードを取得 |
fgetln | ストリームから 1 行を取得 |
fgetpos | ストリームの位置指定 |
fgets | ストリームから 1 行を取得 |
fgetwc | 入力ストリームから次のワイド文字を取得 |
fgetws | ストリームからワイド文字の 1 行を取得 |
fileno | ストリーム状態のチェックとリセット |
fopen | ストリームをオープンする関数 |
fprintf | 書式付き出力変換 |
fpurge | ストリームをフラッシュ |
fputc | 1 文字または 1 ワードをストリームに出力 |
fputs | 1 行をストリームに出力 |
fputwc | ワイド文字をストリームに出力 |
fputws | ワイド文字の 1 行をストリームに出力 |
fread | バイナリストリームの入力/出力 |
freopen | ストリームをオープン関数 |
fropen | ストリームをオープン |
fscanf | 書式付き入力変換 |
fseek | ストリームの位置指定 |
fsetpos | ストリームの位置指定 |
ftell | ストリームの位置指定 |
funopen | ストリームをオープン |
fwide | ストリームのオリエンテーション (位置付け) を設定/取得 |
fwopen | ストリームをオープン |
fwprintf | 書式付きワイド文字出力変換 |
fwrite | バイナリストリームの入力/出力 |
getc | 入力ストリームから次の文字またはワードを取得 |
getchar | 入力ストリームから次の文字またはワードを取得 |
getdelim | ストリームから 1 行を所得 |
getline | ストリームから 1 行を所得 |
gets | ストリームから 1 行を取得 |
getw | 入力ストリームから次の文字またはワードを取得 |
getwc | 入力ストリームから次のワイド文字を取得 |
getwchar | 入力ストリームから次のワイド文字を取得 |
mkdtemp | ユニークなテンポラリディレクトリを作成 |
mkstemp | ユニークなテンポラリファイルを作成 |
mktemp | ユニークなテンポラリファイルを作成 |
perror | システムエラーメッセージ |
printf | 書式付き出力変換 |
putc | 1 文字またはワードをストリームに出力 |
putchar | 1 文字またはワードをストリームに出力 |
puts | 1 行をストリームに出力 |
putw | 1 文字またはワードをストリームに出力 |
putwc | 1 ワイド文字をストリームに出力 |
putwchar | 1 ワイド文字をストリームに出力 |
remove | ディレクトリエントリの削除 |
rewind | ストリームの位置指定 |
scanf | 書式付き入力変換 |
setbuf | ストリームのバッファリング操作 |
setbuffer | ストリームのバッファリング操作 |
setlinebuf | ストリームのバッファリング操作 |
setvbuf | ストリームのバッファリング操作 |
snprintf | 書式付き出力変換 |
sprintf | 書式付き出力変換 |
sscanf | 書式付き入力変換 |
strerror | システムエラーメッセージ |
swprintf | 書式付きワイド文字出力変換 |
sys_errlist | システムエラーメッセージ |
sys_nerr | システムエラーメッセージ |
tempnam | テンポラリファイルルーチン |
tmpfile | テンポラリファイルルーチン |
tmpnam | テンポラリファイルルーチン |
ungetc | 入力ストリームに文字を返す |
ungetwc | 入力ストリームにワイド文字を返す |
vasprintf | 書式付き出力変換 |
vdprintf | 書式付き出力変換 |
vfprintf | 書式付き出力変換 |
vfscanf | 書式変換の入力 |
vfwprintf | 書式付きワイド文字出力変換 |
vprintf | 書式付き出力変換 |
vscanf | 書式変換の入力 |
vsnprintf | 書式付き出力変換 |
vsprintf | 書式付き出力変換 |
vsscanf | 書式変換の入力 |
vswprintf | 書式付きワイド文字出力変換 |
vwprintf | 書式付きワイド文字出力変換 |
wprintf | 書式付きワイド文字出力変換 |
バグ
標準のバッファ付き関数は、他のライブラリ関数およびシステム関数、特に vfork(2) とはうまく交流することができません。March 3, 2009 | FreeBSD |