ストリーム入出力

これらの関数は、1 文字から大きなデータ構造に至るまで、さまざまなサイズと形式のデータを処理します。 バッファリングも提供しており、パフォーマンスを向上させることができます。 ストリーム バッファーの既定のサイズは 4K です。 これらのルーチンは、ランタイム ライブラリ ルーチンによって作成されるバッファーにのみ影響し、オペレーティング システムによって作成されるバッファーには影響しません。

ストリーム I/O ルーチン

ルーチンによって返される値 使用
clearerr, clearerr_s ストリームのクリア エラー インジケーター
fclose ストリームを閉じる
_fcloseall stdin, stdout、および stderrを除く、開いているすべてのストリームを閉じる
_fdopen, wfdopen 開いているファイルのファイル記述子にストリームを関連付ける
feof ストリームのファイルの終わりをテストする
ferror ストリームのエラーをテストする
fflush ストリームをバッファーまたはストレージ デバイスにフラッシュする
fgetc, fgetwc ストリームから文字を読み取る ( getc および getwcの関数バージョン)
_fgetchar, _fgetwchar stdin から文字を読み取る ( getchar および getwcharの関数バージョン)
fgetpos ストリームの位置インジケーターを取得する
fgets, fgetws 文字列をストリームから読み取る
_fileno ストリームに関連付けられているファイル記述子を取得する
_flushall すべてのストリームをバッファーまたはストレージ デバイスにフラッシュする
fopen, _wfopen, fopen_s, _wfopen_s ストリームを開く
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l ストリームに書式付きデータを書き込む
fputc, fputwc ストリームに文字を書き込む ( putc および putwcの関数バージョン)
_fputchar, _fputwchar stdout に文字を書き込む ( putchar および putwcharの関数バージョン)
fputs, fputws 文字列をストリームに書き込む
fread 書式設定されていないデータをストリームから読み取る
freopen, _wfreopen, freopen_s, _wfreopen_s FILE ストリーム ポインターを新しいファイルまたはデバイスに再割り当てする
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l 書式付きデータをストリームから読み取る
fseek, _fseeki64 ファイルの位置を指定の場所に移動する
fsetpos ストリームの位置インジケーターを設定する
_fsopen, _wfsopen ファイル共有付きでストリームを開く
ftell, _ftelli64 現在のファイルの位置を取得する
fwrite 書式設定されていないデータの項目をストリームに書き込む
getc, getwc ストリームから文字を読み取る ( fgetc および fgetwcのマクロ バージョン)
getchar, getwchar stdin から文字を読み取る ( fgetchar および fgetwcharのマクロ バージョン)
_getmaxstdio ストリーム入出力のレベルで許可されている、同時に開かれたファイルの数を返します。
gets_s, _getws_s stdin
_getw ストリームからバイナリ int を読み取る
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l stdout
putc, putwc ストリームに文字を書き込む ( fputc および fputwcのマクロ バージョン)
putchar, putwchar stdout に文字を書き込む ( fputchar および fputwcharのマクロ バージョン)
puts, _putws ストリームに行を書き込む
_putw ストリームにバイナリ int を書き込む
rewind ファイルの位置をストリームの先頭に移動する
_rmtmp tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l stdin
setbuf ストリーム バッファリングを制御する
_setmaxstdio ストリーム入出力のレベルで同時に開かれるファイルの数の最大値を設定する。
setvbuf ストリーム バッファリングとバッファー サイズを制御する
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l 指定された長さの書式付きデータを文字列に書き込む
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l 指定した長さの書式付きデータを標準入力ストリームから読み取ります。
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l 文字列に書式付きデータを書き込む
sscanfswscanfsscanf_s、_sscanf_s_l、swscanf_s_swscanf_s_l 文字列から書式付きデータを読み取る
_tempnam, _wtempnam 指定されたディレクトリに一時ファイル名を生成する
tmpfile, tmpfile_s 一時ファイルを作成する
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s 一時ファイル名を生成する
ungetc, ungetwc 文字をストリームにプッシュし直す
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l コンソールに書式付きデータを書き込む。
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l ストリームに書式付きデータを書き込む
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l 指定された長さの書式付きデータをバッファーに書き込む
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l バッファーに書式付きデータを書き込む

プログラムの実行を開始すると、スタートアップ コードは自動的に複数のストリームを開きます。すなわち、標準入力 ( stdinが指す)、標準出力 ( stdoutが指す)、および標準エラー ( stderrが指す) です。 これらのストリームは既定でコンソール (キーボードと画面) に送られます。 ディスク ファイルまたはデバイスに freopenstdin、または stdoutをリダイレクトするには stderr を使用します。

ストリーム ルーチンを使用して開くファイルは、既定でバッファリングされます。 関数 stdoutstderr 、満杯になった場合、または文字デバイスに書き込む場合は、各ライブラリ呼び出しの後にフラッシュされます。 プログラムが異常に終了した場合、出力バッファーがフラッシュされず、データが失われる可能性があります。 指定したファイルに関連付けられているバッファーがオペレーティング システムにフラッシュされているか、開いているすべてのバッファーがフラッシュされていることを確認するために使用 fflush または _flushall 使用します。 オペレーティング システムは、ディスクに書き込む前にデータをキャッシュできます。 ディスクへのコミット機能により、システム障害が発生した場合にフラッシュされたバッファーの内容が失われないようにします。

バッファーの内容をディスクにコミットする 2 つの方法があります。

  • ファイル COMMODE.OBJ とリンクして、グローバル コミット フラグを設定します。 グローバル フラグの既定の設定は、 n("コミットなし") です。

  • モード フラグを c または fopen_fdopenに設定します。

c または n フラグで開かれるファイルは、グローバル コミット/コミットなしのフラグの状態にかかわらず、フラグに従って動作します。

プログラムがストリームを明示的に閉じない場合、プログラムの終了時にストリームが自動的に閉じられます。 ただし、一度に開くことのできるストリームの数は限られているため、プログラムがストリームの作業を終了したら、そのストリームを閉じる必要があります。 この制限については、「_setmaxstdio」を参照してください。

出力の直後に入力を行うには、 fflush またはファイル ポジショニング関数 (fseekfsetpos、または rewind) の呼び出しを間に挟まなければなりません。 入力操作でファイルの末尾が検出された場合は、ファイル配置関数の呼び出しを行わずに、入力の後に出力を実行できます。

関連項目

入力と出力
カテゴリ別ユニバーサル C ランタイム ルーチン