ストリーム入出力

これらの関数は、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_wfopenfopen_s_wfopen_s ストリームを開く
fprintf_fprintf_lfwprintf_fwprintf_lfprintf_s_fprintf_s_lfwprintf_s_fwprintf_s_l ストリームに書式付きデータを書き込む
fputc, fputwc ストリームに文字を書き込む ( putc および putwcの関数バージョン)
_fputchar, _fputwchar stdout に文字を書き込む ( putchar および putwcharの関数バージョン)
fputs, fputws 文字列をストリームに書き込む
fread 書式設定されていないデータをストリームから読み取る
freopen_wfreopenfreopen_s_wfreopen_s FILE ストリーム ポインターを新しいファイルまたはデバイスに再割り当てする
fscanffwscanffscanf_s_fscanf_s_lfwscanf_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_lwprintf_wprintf_lprintf_s_printf_s_lwprintf_s_wprintf_s_l stdout に書式付きデータを書き込む
putc, putwc ストリームに文字を書き込む ( fputc および fputwcのマクロ バージョン)
putchar, putwchar stdout に文字を書き込む ( fputchar および fputwcharのマクロ バージョン)
puts, _putws ストリームに行を書き込む
_putw ストリームにバイナリ int を書き込む
rewind ファイルの位置をストリームの先頭に移動する
_rmtmp tmpfile
scanf_scanf_lwscanf_wscanf_lscanf_s_scanf_s_lwscanf_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 指定した長さの書式付きデータを標準入力ストリームから読み取ります。
sprintfswprintfsprintf_s_sprintf_s_lswprintf_s_swprintf_s_l 文字列に書式付きデータを書き込む
sscanfswscanfsscanf_s、_sscanf_s_l、swscanf_s_swscanf_s_l 文字列から書式付きデータを読み取る
_tempnam, _wtempnam 指定されたディレクトリに一時ファイル名を生成する
tmpfile, tmpfile_s 一時ファイルを作成する
tmpnam_wtmpnamtmpnam_s_wtmpnam_s 一時ファイル名を生成する
ungetc, ungetwc 文字をストリームにプッシュし直す
_vcprintf_vcwprintf_vcprintf_s_vcprintf_s_l_vcwprintf_s_vcwprintf_s_l コンソールに書式付きデータを書き込む。
vfprintfvfwprintfvfprintf_s_vfprintf_s_lvfwprintf_s_vfwprintf_s_l ストリームに書式付きデータを書き込む
vprintfvwprintfvprintf_s_vprintf_s_lvwprintf_s_vwprintf_s_l stdout に書式付きデータを書き込む
_vsnprintf_vsnwprintfvsnprintf_s_vsnprintf_s_vsnprintf_s_l_vsnwprintf_s_vsnwprintf_s_l 指定された長さの書式付きデータをバッファーに書き込む
vsprintfvswprintfvsprintf_s_vsprintf_s_lvswprintf_s_vswprintf_s_l バッファーに書式付きデータを書き込む

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

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

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

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

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

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

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

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

関連項目

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