Share via


_fdopen, _wfdopen

Ordnet einen Stream eine Datei, die zuvor für E/a geöffnet wurde.

FILE *_fdopen(  
   int fd,
   const char *mode 
);
FILE *_wfdopen( 
   int fd,
   const wchar_t *mode 
);

Parameter

  • fd
    Dateibeschreibung der geöffneten Datei.

  • mode
    Typ des Dateizugriffs.

Rückgabewert

Jede dieser Funktionen gibt einen Zeiger auf den Stream geöffnet.Ein null-Zeiger-Wert zeigt einen Fehler.Wenn ein Fehler auftritt, der ungültige Parameter-Handler aufgerufen, wie in beschrieben Parametervalidierung.Wenn die Ausführung zulässig ist, um den Vorgang fortzusetzen, errno sollen entweder EBADF, die angibt, dass eines fehlerhafter Dateideskriptor oder EINVAL, die angibt, dass mode wurde ein null-Zeiger.

Weitere Informationen über diese und andere Fehlercodes finden Sie unter _doserrno, Errno, _sys_errlist und _sys_nerr.

Hinweise

Die _fdopen Funktion ordnet einen e/a-Stream mit der Datei, die von fd, und auf diese Weise eine Datei, die geöffnet wird, für E/a gepuffert und formatiert werden._wfdopenist eine Breitzeichen-Version von _fdopen; die mode Argument für _wfdopen ist eine Breitzeichen-Zeichenfolge._wfdopenund _fdopen anders Verhalten identisch.

Zuordnungen für generischen Text Routine

TCHAR.h-routine

_UNICODE und _MBCS nicht definiert

_MBCS definiert

Wenn _UNICODE definiert

_tfdopen

_fdopen

_fdopen

_wfdopen

Die mode Zeichenfolge gibt den Typ der Datei und Dateizugriff.

Die Zeichenfolge mode gibt den Typ des Zugriffs für die Datei angefordert, wie in der folgenden Tabelle dargestellt.

  • "r"
    Wird zum Lesen geöffnet.Wenn die Datei nicht existiert oder kann nicht gefunden werden, die fopen aufrufen, schlägt fehl.

  • "w"
    Öffnet eine leere Datei zum Schreiben.Wenn die angegebene Datei vorhanden ist, werden dessen Inhalt gelöscht.

  • "a"
    Öffnet für schreiben, am Ende der Datei (Anfügen).Erstellt die Datei, wenn es nicht vorhanden ist.

  • "r+"
    Öffnet für das Lesen und schreiben.(Die Datei muss vorhanden sein.)

  • "w+"
    Öffnet eine leere Datei für Lesen und schreiben.Wenn die angegebene Datei vorhanden ist, werden dessen Inhalt gelöscht.

  • "a+"
    Öffnet zum Lesen und anfügen.Erstellt die Datei, wenn es nicht vorhanden ist.

Beim Öffnen einer Datei mit der "a" oder "a+" Zugriffstyp, write-Vorgänge am Ende der Datei auftreten.Der Dateizeiger kann neu positioniert werden, mithilfe von fseek oder rewind, aber es ist immer verschoben zurück an das Ende der Datei bevor alle schreiben Vorgang durchgeführt.So können vorhandene Daten überschrieben werden.Wenn die "r+", "w+", oder "a+" Zugriffsart angegeben ist, sowohl lesen und Schreiben sind zulässig (die Datei ist offen für "Update" bezeichnet).Jedoch beim Wechseln zwischen lesen und schreiben muss es eine Intervention fflush, fsetpos, fseek, oder rewind Betrieb.Sie können angeben, dass die aktuelle Position für die fsetpos oder fseek Vorgang, wenn Sie möchten.

Zusätzlich zu den oben genannten Werte die folgenden Zeichen können werden ebenfalls in mode an den Übersetzungsmodus für Zeilenumbruchzeichen.

  • t
    Open Text übersetzt () Modus.In diesem Modus Carriage Return-Line Feed (CR-LF) Kombinationen werden in One-Zeilenvorschub (LF) bei der Eingabe übersetzt und LF-Zeichen werden in CR-LF-Kombinationen bei der Ausgabe übersetzt.Außerdem wird STRG + Z als EOF-Zeichen bei der Eingabe interpretiert.In Dateien, die zum Lesen und Schreiben geöffnet fopen eine STRG + Z am Ende der Datei überprüft und entfernt, wenn möglich.Dies geschieht, da die fseek und ftell Funktionen, um innerhalb einer Datei verschieben, die mit einem STRG + Z beendet möglicherweise fseek am Ende der Datei nicht ordnungsgemäß Verhalten.

  • b
    Im Binärmodus (nicht übersetzten) geöffnet.Alle Übersetzungen von t Modus unterdrückt werden.

  • c
    Aktivieren Sie die Commit-Flag für die zugeordnete filename so, dass der Inhalt des Dateipuffers direkt, wenn beide Datenträger geschrieben werden fflush oder _flushall wird aufgerufen.

  • n
    Zurücksetzen der Commit-Flag für die zugeordnete filename , "Nein-Commit". Dies ist die Standardeinstellung.Es überschreibt auch globale Commit-Flag, wenn Sie Ihr Programm mit Commode.obj verknüpfen.Der globale Commit Flag Standardwert ist "Nein-Commit", wenn Sie Ihr Programm mit Commode.obj explizit verknüpfen.

The t, c, and nmode options are Microsoft extensions for fopen and _fdopen.Verwenden Sie sie nicht, wenn Sie ANSI-Portabilität beibehalten möchten.

Wenn t oder b findet sich nicht in mode, ist der Standardmodus Übersetzung durch die globale Variable definiert _fmode.Wenn t oder b ist das Argument, die Funktion schlägt fehl und gibt mit dem Präfix NULL.Eine Erläuterung Text- und binäre Modi finden Sie unter Text und Binary Mode Dateieingabe.

Gültige Zeichen für die mode Zeichenfolge im fopen und _fdopen entsprechen den oflag Argumente in _open und _sopen, wie folgt.

Zeichen in mode Zeichenfolge

Equivalent oflagvalue for _open/_sopen

a

_O_WRONLY | _O_APPEND(usually _O_WRONLY | _O_CREAT | _O_APPEND)

a+

_O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT )

r

_O_RDONLY

r+

_O_RDWR

w

_O_WRONLY(usually _O_WRONLY | _O_CREAT | _O_TRUNC)

w+

_O_RDWR(usually _O_RDWR | _O_CREAT | _O_TRUNC)

b

_O_BINARY

t

_O_TEXT

c

None

n

None

Anforderungen

Funktion

Erforderlicher header

_fdopen

<stdio.h>

_wfdopen

<stdio.h> oder <wchar.h>

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

Beispiel

// crt_fdopen.c
// This program opens a file by using low-level
// I/O, then uses _fdopen to switch to stream
// access. It counts the lines in the file.


#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <share.h>

int main( void )
{
   FILE *stream;
   int  fd, count = 0;
   char inbuf[128];

   // Open a file.
   if( _sopen_s( &fd, "crt_fdopen.txt", _O_RDONLY, _SH_DENYNO, 0 ) )
      exit( 1 );

   // Get stream from file descriptor.
   if( (stream = _fdopen( fd, "r" )) == NULL )
      exit( 1 );

   while( fgets( inbuf, 128, stream ) != NULL )
      count++;

   // After _fdopen, close by using fclose, not _close.
   fclose( stream );
   printf( "Lines in file: %d\n", count );
}

Eingabe: crt_fdopen.txt

Line one
Line two

dye30d82.collapse_all(de-de,VS.110).gifOutput

Lines in file: 2

.NET Framework-Entsprechung

System::IO::FileStream::FileStream

Siehe auch

Referenz

Stream E/A

_dup, _dup2

fclose, _fcloseall

fopen, _wfopen

freopen, _wfreopen

_open, _wopen