_setmode_setmode

Ustawia tryb tłumaczenia plików.Sets the file translation mode.

SkładniaSyntax

int _setmode (
   int fd,
   int mode
);

ParametryParameters

procesfd
Deskryptor pliku.File descriptor.

wystmode
Nowy tryb tłumaczenia.New translation mode.

Wartość zwracanaReturn Value

Jeśli to się powiedzie, zwraca poprzedni tryb tłumaczenia.If successful, returns the previous translation mode.

Jeśli do tej funkcji są przesyłane nieprawidłowe parametry, procedura obsługi nieprawidłowego parametru jest wywoływana, zgodnie z opisem w walidacji parametru.If invalid parameters are passed to this function, the invalid-parameter handler is invoked, as described in Parameter Validation. Jeśli wykonanie może być kontynuowane, funkcja zwraca wartość-1 i ustawia errno na EBADF, która wskazuje nieprawidłowy deskryptor pliku lub EINVAL, który wskazuje nieprawidłowy argument trybu .If execution is allowed to continue, this function returns -1 and sets errno to either EBADF, which indicates an invalid file descriptor, or EINVAL, which indicates an invalid mode argument.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.For more information about these and other return codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.

UwagiRemarks

Funkcja _setmode ustawia tryb translacji pliku , który jest określony przez FD.The _setmode function sets to mode the translation mode of the file given by fd. Przekazywanie _O_TEXT jako tryb ustawia tekst (jest tłumaczony) tryb.Passing _O_TEXT as mode sets text (that is, translated) mode. Kombinacje powrotu karetki liniowej (CR-LF) są tłumaczone na pojedynczy znak wysuwu wiersza na wejściu.Carriage return-line feed (CR-LF) combinations are translated into a single line feed character on input. Znaki wysuwu wiersza są tłumaczone na kombinacje CR-LF w danych wyjściowych.Line feed characters are translated into CR-LF combinations on output. Przekazywanie _O_BINARY ustawia tryb binarny (nieprzetłumaczony), w którym te tłumaczenia są pomijane.Passing _O_BINARY sets binary (untranslated) mode, in which these translations are suppressed.

Możesz również przekazać _O_U16TEXT, _O_U8TEXT lub _O_WTEXT , aby włączyć tryb Unicode, jak pokazano w drugim przykładzie w dalszej części tego dokumentu.You can also pass _O_U16TEXT, _O_U8TEXT, or _O_WTEXT to enable Unicode mode, as demonstrated in the second example later in this document.

Przestroga

Tryb Unicode jest przeznaczony dla szerokiej funkcji drukowania (na przykład wprintf ) i nie jest obsługiwany w przypadku wąskich funkcji drukowania.Unicode mode is for wide print functions (for example, wprintf) and is not supported for narrow print functions. Użycie wąskiej funkcji drukowania w strumieniu trybu Unicode wyzwala potwierdzenie.Use of a narrow print function on a Unicode mode stream triggers an assert.

_setmode jest zwykle używany do modyfikacji domyślnego trybu translacji stdin i stdout, ale można go użyć w dowolnym pliku._setmode is typically used to modify the default translation mode of stdin and stdout, but you can use it on any file. Jeśli zastosujesz _setmode do deskryptora pliku dla strumienia, wywołaj _setmode przed wykonaniem jakichkolwiek operacji wejścia lub wyjścia strumienia.If you apply _setmode to the file descriptor for a stream, call _setmode before you perform any input or output operations on the stream.

Przestroga

Jeśli zapisujesz dane do strumienia plików, jawnie Opróżniaj kod przy użyciu fflush przed użyciem _setmode , aby zmienić tryb.If you write data to a file stream, explicitly flush the code by using fflush before you use _setmode to change the mode. Jeśli kod nie zostanie opróżniony, może wystąpić nieoczekiwane zachowanie.If you do not flush the code, you might get unexpected behavior. Jeśli nie zapisano danych do strumienia, nie ma potrzeby opróżniania kodu.If you have not written data to the stream, you do not have to flush the code.

Domyślnie globalny stan tej funkcji jest objęty zakresem aplikacji.By default, this function's global state is scoped to the application. Aby to zmienić, zobacz stan globalny w CRT.To change this, see Global state in the CRT.

WymaganiaRequirements

ProceduraRoutine Wymagany nagłówekRequired header Opcjonalne nagłówkiOptional Headers
_setmode_setmode <io.h> <fcntl.h>

Aby uzyskać więcej informacji o zgodności, zobacz zgodność.For more compatibility information, see Compatibility.

Przykład: Użyj _setmode, aby zmienić stdinExample: Use _setmode to change stdin

// 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

Przykład: Użyj _setmode, aby zmienić stdoutExample: Use _setmode to change stdout

// 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;
}

Zobacz teżSee also

Obsługa plikówFile Handling
_creat, _wcreat_creat, _wcreat
fopen, _wfopenfopen, _wfopen
_open, _wopen_open, _wopen
_set_fmode_set_fmode