_setmode
Ustawia tryb translacji pliku.
int _setmode (
int fd,
int mode
);
Parametry
fd
Plik deskryptora.mode
Nowy tryb translacji.
Wartość zwracana
Jeśli to się powiedzie, zwraca poprzedniego tryb translacji.
Jeżeli nie przekazano nieprawidłowe parametry do tej funkcji, program obsługi nieprawidłowy parametr zostanie wywołany, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, to funkcja zwraca –1 i zestawy errno albo EBADF, która wskazuje deskryptora nieprawidłowy plik lub EINVAL, która wskazuje nieprawidłową mode argument.
Aby uzyskać więcej informacji na temat tych i innych kodów powrotu, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.
Uwagi
_setmode Funkcja ustawia się na mode tryb translacji pliku przez fd.Przekazując _O_TEXT jako mode tekstu (translacji) ustawia tryb.Return–line przewóz paszy kombinacji (CR LF) zostały przetłumaczone na pojedynczy wiersz znaku wysuwu na wejściu.Znaki wysuwu wiersza są tłumaczone na kombinacji CR LF na wyjściu.Przekazując _O_BINARY ustawia binarny (nieprzetłumaczony) tryb, w którym te tłumaczenia są pomijane.
Można również przekazać _O_U16TEXT, _O_U8TEXT, lub _O_WTEXT Aby włączyć tryb Unicode, jak pokazano w drugim przykładzie tego dokumentu._setmodeZazwyczaj można modyfikować domyślny tryb translacji stdin i stdout, ale można go użyć na dowolny plik.Jeśli zastosujesz _setmode do pliku deskryptora dla strumienia, call _setmode przed wykonaniem jakichkolwiek operacji wejściowego lub wyjściowego w strumieniu.
Przestroga |
---|
Jeśli piszesz danych do strumienia pliku jawnie opróżnienia kodu za pomocą fflush przed użyciem _setmode do zmiany trybu.Jeśli kod nie jest flush, można otrzymać nieoczekiwane zachowanie.Jeśli dane nie zostały zapisane w strumieniu, nie masz flush kod. |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
Opcjonalna nagłówki |
---|---|---|
_setmode |
<io.h> |
<fcntl.h> |
Informacji dotyczących zgodności, zobacz zgodności.
Przykład
// 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;