Freigeben über


_setmode

Legt den Dateiübersetzungsmodus fest.

int _setmode (    int fd,    int mode  );

Parameter

  • fd
    Dateideskriptor.

  • mode
    Neuer Übersetzungsmodus.

Rückgabewert

Im Erfolgsfall wird der vorherige Übersetzungsmodus zurückgegeben.

Wenn ungültige Parameter an diese Funktion übergeben werden, ruft sie den Handler für ungültige Parameter auf, wie in Parametervalidierung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt diese Funktion –1 zurück und setzt errno auf EBADF, wodurch ein ungültiger Dateideskriptor angezeigt wird, oder auf EINVAL, wodurch ein ungültiges mode-Argument angezeigt wird.

Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die Funktion _setmode setzt den Übersetzungsmodus der von fd bereitgestellten Datei auf mode. Durch die Übergabe von _O_TEXT als mode wird der Modus für den übersetzten Text festgelegt. Kombinationen aus Wagenrücklauf und Zeilenvorschub (CR-LF) werden bei der Eingabe in ein einzelnes Zeilenvorschubzeichen umgewandelt. Zeilenvorschubzeichen werden bei der Ausgabe in Kombinationen aus Wagenrücklauf und Zeilenvorschub (CR-LF) übersetzt. Durch die Übergabe von _O_BINARY wird der binäre (nicht übersetzte) Modus festgelegt, in dem diese Übersetzungen unterdrückt werden.

Sie können auch _O_U16TEXT, _O_U8TEXT oder _O_WTEXT übergeben, um den Unicode-Modus zu aktivieren, wie später im zweiten Beispiel in diesem Dokument demonstriert wird. _setmode wird normalerweise verwendet, um den Standardübersetzungsmodus von stdin und stdout zu ändern, aber Sie können es für jede Datei verwenden. Wenn Sie _setmode auf den Dateideskriptor für einen Stream anwenden, rufen Sie _setmode auf, bevor Sie Eingabe- oder Ausgabevorgänge an diesem Stream durchführen.

Warnung

Wenn Sie Daten in einen Dateienstream schreiben, leeren Sie den Code explizit, indem Sie fflush verwenden, bevor Sie _setmode verwenden, um den Modus zu ändern.Wenn Sie den Code nicht leeren, kann es zu unerwartetem Verhalten kommen.Wenn Sie keine Daten in den Stream geschrieben haben, müssen Sie den Code nicht leeren.

Anforderungen

Routine

Erforderlicher Header

Optionale Header

_setmode

<io.h>

<fcntl.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Beispiel

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

Entsprechung in .NET Framework

Siehe auch

Referenz

Dateibehandlung

_creat, _wcreat

fopen, _wfopen

_open, _wopen

_set_fmode