스트림 I/O

이러한 함수는 단일 문자에서 대형 데이터 구조체에 이르기까지 다양한 크기 및 형식의 데이터를 처리합니다. 또한 버퍼링을 제공하여 성능을 향상시킬 수 있습니다. 스트림 버퍼의 기본 크기는 4K입니다. 이러한 루틴은 런타임 라이브러리 루틴에 의해 생성된 버퍼에만 영향을 주며 운영 체제에서 생성된 버퍼에는 영향을 주지 않습니다.

스트림 I/O 루틴

루틴 기능
clearerr, clearerr_s 스트림 오류 표시기를 지웁니다.
fclose 스트림을 닫습니다.
_fcloseall stdin, stdoutstderr을 제외하고 열려 있는 모든 스트림을 닫습니다.
_fdopen, wfdopen 열려 있는 파일의 파일 설명자에 스트림을 연결합니다.
feof 스트림에서 파일의 끝을 테스트합니다.
ferror 스트림에서 오류를 테스트합니다.
fflush 스트림을 버퍼 또는 저장 장치로 플러시합니다.
fgetc, fgetwc 스트림에서 문자를 읽습니다( getcgetwc의 함수 버전).
_fgetchar, _fgetwchar stdin 에서 문자를 읽습니다( getchargetwchar의 함수 버전).
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 스트림에 문자를 씁니다( putcputwc의 함수 버전).
_fputchar, _fputwchar stdout 에 문자를 씁니다( putcharputwchar의 함수 버전).
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 스트림에서 문자를 읽습니다( fgetcfgetwc의 매크로 버전).
getchar, getwchar stdin 에서 문자를 읽습니다( fgetcharfgetwchar의 매크로 버전).
_getmaxstdio 스트림 I/O 수준에서 허용되는 동시에 열리는 파일 수를 반환합니다.
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 스트림에 문자를 씁니다( fputcfputwc의 매크로 버전).
putchar, putwchar stdout 에 문자를 씁니다( fputcharfputwchar의 매크로 버전).
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 스트림 I/O 수준에서 동시에 열려 있는 파일 수의 최대값을 설정합니다.
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 문자열에 형식이 지정된 데이터를 씁니다.
sscanf, swscanf, sscanf_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이 가리키는 표준 오류)을 엽니다. 이러한 스트림은 기본적으로 콘솔(키보드 및 화면)으로 전송됩니다. freopen , stdin또는 stdout을 디스크 파일 또는 장치로 리디렉션하려면 stderr 을 사용합니다.

스트림 루틴을 사용하여 열린 파일은 기본적으로 버퍼링됩니다. stdoutstderr 함수는 가득 찰 때마다 또는 문자 입출력 장치에 쓰는 경우 각 라이브러리 호출 후에 플러시됩니다. 프로그램이 비정상적으로 종료되면 출력 버퍼가 플러시되지 않아 데이터 손실이 발생할 수 있습니다. fflush 또는 _flushall 을 사용하여 지정한 파일과 연결된 버퍼 또는 열려 있는 모든 버퍼가 운영 체제로 플러시되도록 합니다. 운영 체제는 디스크에 쓰기 전에 데이터를 캐시할 수 있습니다. 디스크에 커밋 기능은 시스템 오류 발생 시 플러시된 버퍼 내용이 손실되지 않도록 합니다.

버퍼 내용을 디스크에 커밋하는 방법에는 다음 두 가지가 있습니다.

  • COMMODE.OBJ 파일에 연결하여 전역 커밋 플래그를 설정합니다. 전역 플래그의 기본 설정은 n("커밋 안 함")입니다.

  • c 또는 fopen 을 사용하여 모드 플래그를 _fdopen로 설정합니다.

    c 또는 n 플래그를 사용하여 구체적으로 열린 파일은 전역 커밋/커밋 안 함 플래그 상태에 관계없이 플래그에 따라 동작합니다.

    프로그램이 명시적으로 스트림을 닫지 않을 경우 프로그램이 종료되면 스트림이 자동으로 닫힙니다. 그러나 한 번에 열려 있을 수 있는 스트림 수가 제한되므로 프로그램이 작업을 마치면 스트림을 닫아야 합니다. 이 제한에 대한 자세한 내용은 _setmaxstdio를 참조하세요.

    fflush 또는 파일 위치 지정 함수(fseek, fsetpos또는 rewind)에 대한 중간 호출을 사용해야만 입력이 출력을 직접 따를 수 있습니다. 입력 작업이 파일의 끝을 발견할 경우 파일 위치 지정 함수에 대한 중간 호출 없이 출력이 입력을 따를 수 있습니다.

참고 항목

입력 및 출력
범주별 런타임 루틴