스트림 I/OStream I/O

이러한 함수는 단일 문자에서 대형 데이터 구조체에 이르기까지 다양한 크기 및 형식의 데이터를 처리합니다.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.

스트림 I/O 루틴Stream I/O Routines

루틴Routine 기능Use
clearerr, clearerr_sclearerr, clearerr_s 스트림 오류 표시기를 지웁니다.Clear error indicator for stream
fclosefclose 스트림을 닫습니다.Close stream
_fcloseall_fcloseall stdin, stdoutstderr을 제외하고 열려 있는 모든 스트림을 닫습니다.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 스트림에서 문자를 읽습니다( getcgetwc의 함수 버전).Read character from stream (function versions of getc and getwc)
_fgetchar, _fgetwchar_fgetchar, _fgetwchar stdin 에서 문자를 읽습니다( getchargetwchar의 함수 버전).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, _wfopen, fopen_s, _wfopen_sfopen, _wfopen, fopen_s, _wfopen_s 스트림을 엽니다.Open stream
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_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 스트림에 문자를 씁니다( putcputwc의 함수 버전).Write a character to a stream (function versions of putc and putwc)
_fputchar, _fputwchar_fputchar, _fputwchar stdout 에 문자를 씁니다( putcharputwchar의 함수 버전).Write character to stdout (function versions of putchar and putwchar)
fputs, fputwsfputs, fputws 스트림에 문자열을 씁니다.Write string to stream
freadfread 스트림에서 형식이 지정되지 않은 데이터를 읽습니다.Read unformatted data from stream
freopen, _wfreopen, freopen_s, _wfreopen_sfreopen, _wfreopen, freopen_s, _wfreopen_s 새 파일 또는 장치에 FILE 스트림 포인터를 다시 할당합니다.Reassign FILE stream pointer to new file or device
fscanf, fwscanf, fscanf_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 스트림에서 문자를 읽습니다( fgetcfgetwc의 매크로 버전).Read character from stream (macro versions of fgetc and fgetwc)
getchar, getwchargetchar, getwchar stdin 에서 문자를 읽습니다( fgetcharfgetwchar의 매크로 버전).Read character from stdin (macro versions of fgetchar and fgetwchar)
_getmaxstdio_getmaxstdio 스트림 I/O 수준에서 허용되는 동시에 열리는 파일 수를 반환합니다.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_l,printf_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 스트림에 문자를 씁니다( fputcfputwc의 매크로 버전).Write character to a stream (macro versions of fputc and fputwc)
putchar, putwcharputchar, putwchar stdout 에 문자를 씁니다( fputcharfputwchar의 매크로 버전).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_l,scanf_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 스트림 I/O 수준에서 동시에 열려 있는 파일 수의 최대값을 설정합니다.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, swprintf, sprintf_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, swscanf, sscanf_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
tmpfile, tmpfile_stmpfile, tmpfile_s 임시 파일을 만듭니다.Create temporary file
tmpnam, _wtmpnam, tmpnam_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, vfwprintf, vfprintf_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, vwprintf, vprintf_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, _vsnwprintf, vsnprintf_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, vswprintf, vsprintf_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. freopen , stdin또는 stdout을 디스크 파일 또는 장치로 리디렉션하려면 stderr 을 사용합니다.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. stdoutstderr 함수는 가득 찰 때마다 또는 문자 입출력 장치에 쓰는 경우 각 라이브러리 호출 후에 플러시됩니다.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.

버퍼 내용을 디스크에 커밋하는 방법에는 다음 두 가지가 있습니다.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."

  • c 또는 fopen 을 사용하여 모드 플래그를 _fdopen로 설정합니다.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
범주별 런타임 루틴Run-Time Routines by Category