Sdílet prostřednictvím


_setmode

Nastaví režim překladu souborů.

Syntaxe

int _setmode (
   int fd,
   int mode
);

Parametry

fd
Popisovač souboru

mode
Nový režim překladu

Vrácená hodnota

V případě úspěchu vrátí předchozí režim překladu.

Pokud jsou této funkci předány neplatné parametry, vyvolá se obslužná rutina neplatného parametru, jak je popsáno v ověření parametru. Pokud je spuštění povoleno pokračovat, vrátí tato funkce hodnotu -1 a nastaví errno buď EBADF, což označuje neplatný popisovač souboru, nebo EINVAL, který označuje neplatný mode argument.

Další informace o těchto a dalších návratových kódech naleznete v tématu , , , a_sys_nerr . _sys_errlist_doserrnoerrno

Poznámky

Funkce _setmode nastaví mode režim překladu souboru poskytnutého fd. Předávání _O_TEXT jako mode nastaví režim textu ANSI (tj. přeložený). Kombinace vrácené čáry (CR-LF) se při vstupu překládají do jednoho znaku odřádkování. Znaky odřádkování se při výstupu překládají do kombinací CR-LF. Předávání _O_BINARY binárního (nepřeledného) režimu, ve kterém jsou tyto překlady potlačeny.

Můžete také předat _O_U16TEXT, _O_U8TEXTnebo _O_WTEXT povolit režim Unicode, jak je znázorněno v druhém příkladu dále v tomto dokumentu.

Upozornění

Režim Unicode je určen pro široké tiskové funkce (například wprintf) a není podporován pro úzké tiskové funkce. Použití úzké tiskové funkce v streamu režimu Unicode aktivuje assert.

_setmode se obvykle používá k úpravě výchozího režimu překladu stdin a stdout, ale můžete ho použít v libovolném souboru. Pokud použijete _setmode popisovač souboru pro datový proud, zavolejte _setmode před provedením vstupních nebo výstupních operací ve streamu.

Upozornění

Pokud zapisujete data do datového proudu souboru, explicitně vyprázdněte kód před fflush_setmode změnou režimu. Pokud kód nevyprázdníte, může dojít k neočekávanému chování. Pokud jste do datového proudu nezapisovali data, nemusíte kód vyprázdnit.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Požadavky

Rutina Požadovaný hlavičkový soubor Volitelné hlavičky
_setmode <io.h> <fcntl.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad: Použití _setmode ke změně 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

Příklad: Použití _setmode ke změně stdoutu

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

Viz také

Zpracování souborů
_creat, _wcreat
fopen, _wfopen
_open, _wopen
_set_fmode