다음을 통해 공유


_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는 일반적으로 stdinstdout의 기본 변환 모드를 수정하는 데 사용되지만 아무 파일에나 사용할 수 있습니다. _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