ストリーム入出力Stream I/O

これらの関数は、1 文字から大きなデータ構造に至るまで、さまざまなサイズと形式のデータを処理します。These functions process data in different sizes and formats, from single characters to large data structures. バッファリングも提供しており、パフォーマンスを向上させることができます。They also provide buffering, which can improve performance. ストリーム バッファーの既定のサイズは 4K です。The default size of a stream buffer is 4K. これらのルーチンは、ランタイム ライブラリ ルーチンによって作成されるバッファーにのみ影響し、オペレーティング システムによって作成されるバッファーには影響しません。These routines affect only buffers created by the run-time library routines, and have no effect on buffers created by the operating system.

ストリーム入出力ルーチンStream I/O Routines

ルーチンによって返される値Routine 使用Use
clearerrclearerr_sclearerr, clearerr_s ストリームのクリア エラー インジケーターClear error indicator for stream
fclosefclose ストリームを閉じるClose stream
_fcloseall_fcloseall stdinstdoutstderr を除く、開いているすべてのストリームを閉じるClose all open streams except stdin, stdout, and stderr
_fdopen、wfdopen_fdopen, wfdopen 開いているファイルのファイル記述子にストリームを関連付けるAssociate stream with file descriptor of open file
feoffeof ストリームのファイルの終わりをテストするTest for end of file on stream
ferrorferror ストリームのエラーをテストするTest for error on stream
fflushfflush ストリームをバッファーまたはストレージ デバイスにフラッシュするFlush stream to buffer or storage device
fgetc、fgetwcfgetc, fgetwc ストリームから文字を読み取る (getc および getwc の関数バージョン)Read character from stream (function versions of getc and getwc)
_fgetchar、_fgetwchar_fgetchar, _fgetwchar stdin から文字を読み取る (getchar および getwchar の関数バージョン)Read character from stdin (function versions of getchar and getwchar)
fgetposfgetpos ストリームの位置インジケーターを取得するGet position indicator of stream
fgets、fgetwsfgets, fgetws 文字列をストリームから読み取るRead string from stream
_fileno_fileno ストリームに関連付けられているファイル記述子を取得するGet file descriptor associated with stream
_flushall_flushall すべてのストリームをバッファーまたはストレージ デバイスにフラッシュするFlush all streams to buffer or storage device
fopen、_wfopenfopen_s, _wfopen_sfopen, _wfopen, fopen_s, _wfopen_s ストリームを開くOpen stream
fprintf、_fprintf_l、fwprintf、_fwprintf_lfprintf_s、_fprintf_s_l、fwprintf_s、_fwprintf_s_lfprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l ストリームに書式付きデータを書き込むWrite formatted data to stream
fputc、fputwcfputc, fputwc ストリームに文字を書き込む (putc および putwc の関数バージョン)Write a character to a stream (function versions of putc and putwc)
_fputchar、_fputwchar_fputchar, _fputwchar stdout に文字を書き込む (putchar および putwchar の関数バージョン)Write character to stdout (function versions of putchar and putwchar)
fputs、fputwsfputs, fputws 文字列をストリームに書き込むWrite string to stream
freadfread 書式設定されていないデータをストリームから読み取るRead unformatted data from stream
freopen、_wfreopenfreopen_s, _wfreopen_sfreopen, _wfreopen, freopen_s, _wfreopen_s FILE ストリーム ポインターを新しいファイルまたはデバイスに再割り当てするReassign FILE stream pointer to new file or device
fscanf、fwscanffscanf_s、_fscanf_s_l、fwscanf_s、_fwscanf_s_lfscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l 書式付きデータをストリームから読み取るRead formatted data from stream
fseek、_fseeki64fseek, _fseeki64 ファイルの位置を指定の場所に移動するMove file position to given location
fsetposfsetpos ストリームの位置インジケーターを設定するSet position indicator of stream
_fsopen、_wfsopen_fsopen, _wfsopen ファイル共有付きでストリームを開くOpen stream with file sharing
ftell、_ftelli64ftell, _ftelli64 現在のファイルの位置を取得するGet current file position
fwritefwrite 書式設定されていないデータの項目をストリームに書き込むWrite unformatted data items to stream
getc、getwcgetc, getwc ストリームから文字を読み取る (fgetc および fgetwc のマクロ バージョン)Read character from stream (macro versions of fgetc and fgetwc)
getchar、getwchargetchar, getwchar stdin から文字を読み取る (fgetchar および fgetwchar のマクロ バージョン)Read character from stdin (macro versions of fgetchar and fgetwchar)
_getmaxstdio_getmaxstdio ストリーム入出力のレベルで許可されている、同時に開かれたファイルの数を返します。Returns the number of simultaneously open files permitted at the stream I/O level.
gets_s、_getws_sgets_s, _getws_s stdin から行を読み取るRead line from stdin
_getw_getw ストリームからバイナリ int を読み取るRead binary int from stream
printf、_printf_l、wprintf、_wprintf_lprintf_s、_printf_s_l、wprintf_s、_wprintf_s_lprintf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l stdout に書式付きデータを書き込むWrite formatted data to stdout
putc、putwcputc, putwc ストリームに文字を書き込む (fputc および fputwc のマクロ バージョン)Write character to a stream (macro versions of fputc and fputwc)
putchar、putwcharputchar, putwchar stdout に文字を書き込む (fputchar および fputwchar のマクロ バージョン)Write character to stdout (macro versions of fputchar and fputwchar)
puts、_putwsputs, _putws ストリームに行を書き込むWrite line to stream
_putw_putw ストリームにバイナリ int を書き込むWrite binary int to stream
rewindrewind ファイルの位置をストリームの先頭に移動するMove file position to beginning of stream
_rmtmp_rmtmp tmpfile によって作成された一時ファイルを削除するRemove temporary files created by tmpfile
scanf、_scanf_l、wscanf、_wscanf_lscanf_s、_scanf_s_l、wscanf_s、_wscanf_s_lscanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l stdin から書式付きデータを読み取るRead formatted data from stdin
setbufsetbuf ストリーム バッファリングを制御するControl stream buffering
_setmaxstdio_setmaxstdio ストリーム入出力のレベルで同時に開かれるファイルの数の最大値を設定する。Set a maximum for the number of simultaneously open files at the stream I/O level.
setvbufsetvbuf ストリーム バッファリングとバッファー サイズを制御するControl stream buffering and buffer size
_snprintf、_snwprintf_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l 指定された長さの書式付きデータを文字列に書き込むWrite formatted data of specified length to string
_snscanf、_snwscanf_snscanf_s、_snscanf_s_l、_snwscanf_s、_snwscanf_s_l_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l 指定した長さの書式付きデータを標準入力ストリームから読み取ります。Read formatted data of a specified length from the standard input stream.
sprintf、swprintfsprintf_s、_sprintf_s_l、swprintf_s、_swprintf_s_lsprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l 文字列に書式付きデータを書き込むWrite formatted data to string
sscanf、swscanfsscanf_s、_sscanf_s_l、swscanf_s、_swscanf_s_lsscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l 文字列から書式付きデータを読み取るRead formatted data from string
_tempnam、_wtempnam_tempnam, _wtempnam 指定されたディレクトリに一時ファイル名を生成するGenerate temporary filename in given directory
tmpfiletmpfile_stmpfile, tmpfile_s 一時ファイルを作成するCreate temporary file
tmpnam、_wtmpnamtmpnam_s, _wtmpnam_stmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s 一時ファイル名を生成するGenerate temporary filename
ungetc、ungetwcungetc, ungetwc 文字をストリームにプッシュし直すPush character back onto stream
_vcprintf、_vcwprintf_vcprintf_s、_vcprintf_s_l、_vcwprintf_s、_vcwprintf_s_l_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l コンソールに書式付きデータを書き込む。Write formatted data to the console.
vfprintf、vfwprintfvfprintf_s、_vfprintf_s_l、vfwprintf_s、_vfwprintf_s_lvfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l ストリームに書式付きデータを書き込むWrite formatted data to stream
vprintf、vwprintfvprintf_s、_vprintf_s_l、vwprintf_s、_vwprintf_s_lvprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l stdout に書式付きデータを書き込むWrite formatted data to stdout
_vsnprintf、_vsnwprintfvsnprintf_s、_vsnprintf_s、_vsnprintf_s_l、_vsnwprintf_s、_vsnwprintf_s_l_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l 指定された長さの書式付きデータをバッファーに書き込むWrite formatted data of specified length to buffer
vsprintf、vswprintfvsprintf_s、_vsprintf_s_l、vswprintf_s、_vswprintf_s_lvsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l バッファーに書式付きデータを書き込むWrite formatted data to buffer

プログラムの実行を開始すると、スタートアップ コードは自動的に複数のストリームを開きます。すなわち、標準入力 (stdin が指す)、標準出力 (stdout が指す)、および標準エラー (stderr が指す) です。When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by stdin), standard output (pointed to by stdout), and standard error (pointed to by stderr). これらのストリームは既定でコンソール (キーボードと画面) に送られます。These streams are directed to the console (keyboard and screen) by default. ディスク ファイルまたはデバイスに stdinstdout、または stderr をリダイレクトするには freopen を使用します。Use freopen to redirect stdin, stdout, or stderr to a disk file or a device.

ストリーム ルーチンを使用して開くファイルは、既定でバッファリングされます。Files opened using the stream routines are buffered by default. いっぱいになった場合、またはキャラクター デバイスに書き込みを行う場合、各ライブラリ呼び出しの後に stdout および stderr の関数はフラッシュされます。The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call. プログラムが異常に終了した場合、出力バッファーがフラッシュされず、データが失われる可能性があります。If a program terminates abnormally, output buffers may not be flushed, resulting in loss of data. fflush または _flushall を使用して、特定のファイルに関連付けられているバッファー、または開いているすべてのバッファーが必ずオペレーティング システムにフラッシュされるようにします。データをディスクに書き込む前に、オペレーティング システムはデータをキャッシュすることができます。Use fflush or _flushall to ensure that the buffer associated with a specified file or all open buffers are flushed to the operating system, which can cache data before writing it to disk. ディスクへのコミットの機能により、フラッシュされるバッファーの内容がシステム障害時に失われないようにすることができます。The commit-to-disk feature ensures that the flushed buffer contents are not lost in the event of a system failure.

バッファーの内容をディスクにコミットする 2 つの方法があります。There are two ways to commit buffer contents to disk:

  • ファイル COMMODE.OBJ とリンクして、グローバル コミット フラグを設定します。Link with the file COMMODE.OBJ to set a global commit flag. グローバル フラグの既定の設定は、n ("コミットなし") です。The default setting of the global flag is n, for "no-commit."

  • モード フラグを fopen または _fdopenc に設定します。Set the mode flag to c with fopen or _fdopen.

c または n フラグで開かれるファイルは、グローバル コミット/コミットなしのフラグの状態にかかわらず、フラグに従って動作します。Any file specifically opened with either the c or the n flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.

プログラムが明示的にストリームを閉じない場合、ストリームはプログラムが終了するときに自動的に閉じます。If your program does not explicitly close a stream, the stream is automatically closed when the program terminates. ただし、一度に開くことのできるストリームの数は限られているため、プログラムがストリームの作業を終了したら、そのストリームを閉じる必要があります。However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. この制限については、 _setmaxstdio を参照してください。See _setmaxstdio for information on this limit.

出力の直後に入力を行うには、fflush またはファイル ポジショニング関数 (fseek fsetpos、または rewind) の呼び出しを間に挟まなければなりません。Input can follow output directly only with an intervening call to fflush or to a file-positioning function (fseek, fsetpos, or rewind). 入力操作がファイルの末尾に達した場合、ファイル ポジショニング関数の呼び出しを間に挟まなくても、入力の直後に出力を行うことができます。Output can follow input without an intervening call to a file-positioning function if the input operation encounters the end of the file.

関連項目See also

入出力Input and Output
カテゴリ別ユニバーサル C ランタイム ルーチンUniversal C runtime routines by category