_fdopen, _wfdopen
Nach oben zu Stdio.h - Index
Header-Datei
stdio.h
Kategorie
Routinen für die Eingabe/Ausgabe
Prototyp
FILE *_fdopen(int handle, char *type);
FILE *_wfdopen(int handle, wchar_t *type);
Beschreibung
Verbindet einen Stream mit einem Datei-Handle.
_fdopen verbindet einen Stream mit einem Datei-Handle, das von creat, dup, dup2 oder open ermittelt wurde.
Der Typ des Streams muss dem Modus des Datei-Handles entsprechen.
Der in Aufrufen von _fdopen verwendete Typ-String kann einen der folgenden Werte annehmen:
r |
Nur zum Lesen öffnen. _fdopen gibt NULL zurück, wenn die Datei nicht geöffnet werden kann. |
w |
Zum Schreiben erstellen. Ist die Datei bereits vorhanden, wird ihr derzeitiger Inhalt überschrieben. |
a |
Anhängen; die Datei wird für Schreibzugriffe am Ende der Datei geöffnet oder, wenn nicht vorhanden, zum Schreiben erstellt. |
r+ |
Öffnet eine vorhandene Datei zum Aktualisieren (Lesen und Schreiben). _fdopen gibt NULL zurück, wenn die Datei nicht geöffnet werden kann. |
w+ |
Erstellt eine neue Datei für Aktualisierungen. Ist die Datei bereits vorhanden, wird ihr Inhalt überschrieben. |
a+ |
Zum Anhängen öffnen; öffnet (oder erstellt, wenn die Datei nicht vorhanden ist) eine Datei für Aktualisierungen am Ende der Datei. |
Um anzugeben, dass eine gegebene Datei im Textmodus geöffnet oder erstellt wird, hängen Sie ein t an den Typ-String an (z.B. rt oder w+t).
Für den Binärmodus hängen Sie entsprechend ein b an den Typ-String an (z.B. rb oder w+b).
Werden t oder b im Typ-String nicht angegeben, wird der Modus durch die globale Variable _fmode festgelegt.
Wenn _fmode der Wert O_BINARY zugewiesen wird, werden Dateien im Binärmodus geöffnet.
Wird _fmode der Wert O_TEXT zugewiesen, werden Dateien im Textmodus geöffnet.
Hinweis:Die O_...-Konstanten sind in fcntl.h definiert.
Wird eine Datei zum Aktualisieren geöffnet, sind beim zugehörigen Stream Lese- und Schreibzugriffe zulässig. Allerdings ist Folgendes zu beachten:
- Nach output darf nicht direkt input folgen. Dazwischen muss fseek oder rewind aufgerufen werden.
- Nach input darf nicht direkt output folgen, ohne dass dazwischen fseek oder rewind aufgerufen wird, oder eine Eingabe erfolgt, die das Dateiende erreicht.
Rückgabewert
Bei erfolgreichem Abschluss gibt _fdopen einen Zeiger auf den neu geöffneten Stream zurück. Tritt ein Fehler auf, wird NULL zurückgegeben.
Beispiel
#include <sys\stat.h> #include <stdio.h> #include <fcntl.h> #include <io.h> int main(void) { int handle; FILE *stream; /* eine Datei öffnen */ handle = open("DUMMY.FIL", O_CREAT | O_WRONLY, S_IREAD | S_IWRITE); /* jetzt das Handle in einen Stream umwandeln */ stream = fdopen(handle, "w"); if (stream == NULL) printf("fdopen failed\n"); else { fprintf(stream, "Hello world\n"); fclose(stream); } return 0; }
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_fdopen |
+ |
+ |
||
_wfdopen |
+ |