_setmode
파일 변환 모드를 설정합니다.
구문
int _setmode (
int fd,
int mode
);
매개 변수
fd
파일 설명자입니다.
mode
새 변환 모드입니다.
반환 값
성공하면 이전 변환 모드를 반환합니다.
잘못된 매개 변수가 이 함수에 전달되면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 실행을 계속할 수 있는 경우 이 함수는 -1을 반환하고 잘못된 파일 설명자를 EINVAL
나타내는 또는 잘못된 mode
인수를 나타내는 -1로 설정합니다 errno
EBADF
.
이러한 코드 및 기타 반환 코드에 대한 자세한 내용은 , _doserrno
및 _sys_nerr
_sys_errlist
를 참조하세요.errno
설명
_setmode
함수는 mode
에서 제공하는 파일 변환 모드인 fd
로 설정됩니다. ANSI 텍스트(즉, 번역됨) 모드를 설정으로 mode
전달 _O_TEXT
합니다. CR-LF(캐리지 리턴 라인 피드) 조합은 입력에서 단일 줄 바꿈 문자로 변환됩니다. 줄 바꿈 문자는 출력 시 CR-LF 조합으로 변환됩니다. _O_BINARY
를 전달하면 이러한 변환이 억제되는 이진(변환되지 않은) 모드가 설정됩니다.
이 문서의 뒷부분에 _O_U8TEXT
있는 두 번째 예제에 설명된 대로 유니코드 모드를 전달_O_U16TEXT
하거나 _O_WTEXT
사용하도록 설정할 수도 있습니다.
주의
유니코드 모드는 와이드 인쇄 함수(예 wprintf
: )용이며 좁은 인쇄 함수에는 지원되지 않습니다. 유니코드 모드 스트림에서 좁은 인쇄 함수를 사용하면 어설션이 트리거됩니다.
_setmode
는 일반적으로 stdin
및 stdout
의 기본 변환 모드를 수정하는 데 사용되지만 아무 파일에나 사용할 수 있습니다. _setmode
를 스트림의 파일 설명자에 적용한 경우 스트림에 대한 입력 또는 출력 작업을 수행하기 전에 _setmode
를 호출합니다.
주의
파일 스트림에 데이터를 쓰는 경우 모드를 변경하는 데 사용하기 _setmode
전에 사용하여 fflush
코드를 명시적으로 플러시합니다. 코드를 플러시하지 않은 경우 예기치 않은 동작이 발생할 수 있습니다. 스트림에 데이터를 쓰지 않을 경우 코드를 플러시할 필요가 없습니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 | 선택적 헤더 |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예: stdin을 변경하는 데 사용 _setmode
// crt_setmode.c
// This program uses _setmode to change
// stdin from text mode to binary mode.
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
int main( void )
{
int result;
// Set "stdin" to have binary mode:
result = _setmode( _fileno( stdin ), _O_BINARY );
if( result == -1 )
perror( "Cannot set mode" );
else
printf( "'stdin' successfully changed to binary mode\n" );
}
'stdin' successfully changed to binary mode
예: stdout을 변경하는 데 사용 _setmode
// crt_setmodeunicode.c
// This program uses _setmode to change
// stdout to Unicode. Cyrillic and Ideographic
// characters will appear on the console (if
// your console font supports those character sets).
#include <fcntl.h>
#include <io.h>
#include <stdio.h>
int main(void) {
_setmode(_fileno(stdout), _O_U16TEXT);
wprintf(L"\x043a\x043e\x0448\x043a\x0430 \x65e5\x672c\x56fd\n");
return 0;
}
참고 항목
파일 처리
_creat
, _wcreat
fopen
, _wfopen
_open
, _wopen
_set_fmode