_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 |
+ |