_setmode
파일 변환 모드를 설정합니다.
int _setmode ( int fd, int mode );
매개 변수
fd
파일 설명자입니다.mode
새 변환 모드입니다.
반환 값
성공하면 이전 변환 모드를 반환합니다.
이 함수에 잘못된 매개 변수가 전달되면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용한 경우 이 함수는 –1을 반환하고 errno를 잘못된 파일 설명자를 나타내는 EBADF 또는 잘못된 mode 인수를 나타내는 EINVAL로 설정합니다.
이러한 반환 코드 및 기타 반환 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr을 참조하십시오.
설명
_setmode 함수는 fd에서 제공하는 파일 변환 모드인 mode로 설정됩니다. _O_TEXT를 mode로 전달하면 텍스트(즉, 변환된) 모드가 설정됩니다. 캐리지 리턴-줄 바꿈(CR-LF) 조합은 입력 시 단일 줄 바꿈 문자로 변환됩니다. 줄 바꿈 문자는 출력 시 CR-LF 조합으로 변환됩니다. _O_BINARY를 전달하면 이러한 변환이 억제되는 이진(변환되지 않은) 모드가 설정됩니다.
또한 이 문서 뒷부분에 있는 두 번째 예제에서 설명하는 대로 _O_U16TEXT, _O_U8TEXT 또는 _O_WTEXT를 전달하여 유니코드 모드를 사용하도록 설정할 수 있습니다. _setmode는 일반적으로 stdin 및 stdout의 기본 변환 모드를 수정하는 데 사용되지만 아무 파일에나 사용할 수 있습니다. _setmode를 스트림의 파일 설명자에 적용한 경우 스트림에 대한 입력 또는 출력 작업을 수행하기 전에 _setmode를 호출합니다.
경고
파일 스트림에 데이터를 쓰는 경우 _setmode를 사용하여 모드를 변경하기 전에 fflush를 사용하여 코드를 명시적으로 플러시합니다.코드를 플러시하지 않은 경우 예기치 않은 동작이 발생할 수 있습니다.스트림에 데이터를 쓰지 않을 경우 코드를 플러시할 필요가 없습니다.
요구 사항
루틴 |
필수 헤더 |
선택적 헤더 |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예제
// 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" );
}
// 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;
}