스트림 I/O
이러한 함수는 단일 문자에서 대형 데이터 구조체에 이르기까지 다양한 크기 및 형식의 데이터를 처리합니다. 또한 버퍼링을 제공하여 성능을 향상시킬 수 있습니다. 스트림 버퍼의 기본 크기는 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 , _wfopen , fopen_s _wfopen_s |
스트림을 엽니다. |
fprintf , _fprintf_l , fwprintf , _fwprintf_l , fprintf_s , _fprintf_s_l , fwprintf_s _fwprintf_s_l |
스트림에 형식이 지정된 데이터를 씁니다. |
fputc , fputwc |
스트림에 문자를 씁니다( putc 및 putwc 의 함수 버전). |
_fputchar , _fputwchar |
stdout 에 문자를 씁니다( putchar 및 putwchar 의 함수 버전). |
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 |
스트림에서 문자를 읽습니다( fgetc 및 fgetwc 의 매크로 버전). |
getchar , getwchar |
stdin 에서 문자를 읽습니다( fgetchar 및 fgetwchar 의 매크로 버전). |
_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 |
스트림에 문자를 씁니다( fputc 및 fputwc 의 매크로 버전). |
putchar , putwchar |
stdout 에 문자를 씁니다( fputchar 및 fputwchar 의 매크로 버전). |
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
)에 대한 중간 호출을 사용해야만 입력이 출력을 직접 따를 수 있습니다. 입력 작업이 파일의 끝에 도달하면 파일 위치 지정 함수에 대한 중간 호출 없이 입력을 출력할 수 있습니다.