スポンサーリンク

STDIO(3) FreeBSD ライブラリ関数マニュアル STDIO(3)

名称

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

ライブラリ

標準 C ライブラリ (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 も同様です。 abort(3) は POSIX の要請に従いバッファをフラッシュしますが、以前の実装で はこれを行っていません。

この実装では、 ‘‘テキスト’’ と ‘‘バイナリ’’ のストリームを区別しません。 実際にはすべてのストリームはバイナリです。いかなるストリームにも、変換が 行われたり余分のパディングが現れたりすることはありません。

プログラムの開始時には、次の 3 つのストリームが事前に定義され、それらを明 示的に開く必要はありません。

 標準入力 (通常入力読み取り用)

標準出力 (通常出力書込み用)
標準エラー出力 (診断出力書込み用)
これらのストリームは stdin, stdout そして stderr と略記されます。初期状態 では標準エラーストリームはバッファリングされていません。標準入力および出 力ストリームは、そのストリームが isatty(3) 関数で判定されるような会話型ま たは ‘‘端末’’ デバイスへの参照でない場合に限り、完全にバッファリングされ ます。実際に、端末デバイスを参照する新規に開かれた すべてのストリームは行 バッファがデフォルトであり、このようなストリームへの保留されている出力 は、入力ストリームが読み込まれたときは常に自動的に書込まれます。このこと は、 ‘‘本当の読み込み’’ に対してのみ当てはまることに注意してください。読 み込み要求がバッファリングされた既存のデータで間に合う場合は、自動的なフ ラッシュは起きません。このような場合、または出力端末に行の一部をプリント した後で大量の処理が行う場合には、出力が現れるように、先に進んで処理を行 う前に、標準出力を fflush(3) する必要があります。もしくは、これらのデフォ ルトを setvbuf(3) 関数で修正することでも可能です。

stdio ライブラリはライブラリ libc の一部であり、ルーチンは C コンパイラに よって必要に応じて自動的にロードされます。以下のマニュアルの 書式の節で は、どのインクルードファイルが使用されるか、関数に対するコンパイラの宣言 がどのようになっているか、どの外部変数が関係しているかを示します。

以下のものはマクロとして定義されています。これらの名称は、現在の定義を #undef を使って削除してからでないと再使用することはできません: BUFSIZ, EOF, FILENAME_MAX, FOPEN_MAX, L_cuserid, L_ctermid, L_tmpnam, NULL, P_tmpdir, SEEK_CUR, SEEK_END, SEEK_SET, TMP_MAX, clearerr, feof, ferror, fileno, fropen, fwopen, getc, getchar, putc, putchar, stderr, stdin, stdout, vfscanf 。マクロ関数 clearerr(), feof(), ferror(), fileno(), getc(), getchar(), putc(), および putchar() には関数バージョンが存在し、 マクロ定義が明示的に削除された場合にはそれが使われます。

関連項目

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

バグ

標準のバッファ付き関数は、他のライブラリ関数およびシステム関数、特に vfork(2) とはうまく相互運用することができません。

規格

stdio ライブラリは、 ISO/IEC 9899:1990 (‘‘ISO C89’’) に適合しています。

関数一覧

関数 説明
asprintf 書式付き出力変換
clearerr ストリームの状態のチェックとリセット
fclose ストリームを閉じる
fdopen ストリームを開く関数
feof ストリームの状態のチェックとリセット
ferror ストリームの状態のチェックとリセット
fflush ストリームのフラッシュ
fgetc 入力ストリームから次のキャラクタまたはワードを取得
fgetln ストリームから 1 行を取得
fgetpos ストリームの位置指定
fgets ストリームから 1 行を取得
fileno ストリームの状態のチェックとリセット
fopen ストリームを開く関数
fprintf 書式付き出力変換
fpurge ストリームのフラッシュ
fputc 1 キャラクタまたは 1 ワードをストリームに出力
fputs 1 行をストリームに出力
fread バイナリストリームの入力/出力
freopen ストリームを開く関数
fropen ストリームを開く
fscanf 書式付き入力変換
fseek ストリームの位置指定
fsetpos ストリームの位置指定
ftell ストリームの位置指定
funopen ストリームを開く
fwopen ストリームを開く
fwrite バイナリストリームの入力/出力
getc 入力ストリームから次のキャラクタまたはワードを取得
getchar 入力ストリームから次のキャラクタまたはワードを取得
gets ストリームから 1 行を取得
getw 入力ストリームから次のキャラクタまたはワードを取得
mkdtemp ユニークなテンポラリファイルを作成
mkstemp ユニークなテンポラリファイルを作成
mktemp ユニークなテンポラリファイルを作成
perror システムエラーメッセージ
printf 書式付き出力変換
putc 1 キャラクタまたはワードをストリームに出力
putchar 1 キャラクタまたはワードをストリームに出力
puts 1 行をストリームに出力
putw 1 キャラクタまたはワードをストリームに出力
remove ディレクトリエントリの削除
rewind ストリームの位置指定
scanf 書式付き入力変換
setbuf ストリームのバッファリング操作
setbuffer ストリームのバッファリング操作
setlinebuf ストリームのバッファリング操作
setvbuf ストリームのバッファリング操作
snprintf 書式付き出力変換
sprintf 書式付き出力変換
sscanf 書式付き入力変換
strerror システムエラーメッセージ
sys_errlist システムエラーメッセージ
sys_nerr システムエラーメッセージ
tempnam テンポラリファイルルーチン
tmpfile テンポラリファイルルーチン
tmpnam テンポラリファイルルーチン
ungetc 入力ストリームに文字を返す
vasprintf 書式付き出力変換
vfprintf 書式付き出力変換
vfscanf 書式付き入力変換
vprintf 書式付き出力変換
vscanf 書式付き入力変換
vsnprintf 書式付き出力変換
vsprintf 書式付き出力変換
vsscanf 書式付き入力変換

FreeBSD 10.0 April 19, 1994 FreeBSD 10.0

スポンサーリンク