다음을 통해 공유


스트림 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 을 사용합니다.

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

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

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

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

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

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

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

참고 항목

입력 및 출력
범주별 유버니설 C 런타임 루틴