_fdopen, _wfdopen

Aus RAD Studio
Wechseln zu: Navigation, Suche

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

+