EN JA
STDIO(3)
STDIO(3) FreeBSD Library Functions Manual STDIO(3)

名称

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

ライブラリ

Standard C Library (libc, -lc)

書式

#include < stdio.h>

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

解説

標準 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, stdinstdout。マクロ関数 clearerr, clearerr_unlocked, feof, feof_unlocked, ferror, ferror_unlocked, fileno, fileno_unlocked, getc, getc_unlocked, getchar, getchar_unlocked, putc, putc_unlocked, putchar, と putchar_unlocked には、関数バージョンが存在し、マクロ定義が明示的に削除された場合は、それが使われます。

関連項目

close(2), open(2), read(2), write(2)

規格

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