freopen, _wfreopen
Nach oben zu stdio.h - Index
Header-Datei
stdio.h
Kategorie
Eingabe-/Ausgaberoutinen
Prototyp
FILE *freopen(const char *filename, const char *mode, FILE *stream);
FILE *_wfreopen(const wchar_t *filename, const wchar_t *mode, FILE *stream);
Beschreibung
Verbindet eine neue Datei mit einem geöffneten Stream.
freopen ersetzt den geöffneten Stream durch die angegebene Datei. Unabhängig davon, ob die Datei geöffnet werden konnte, wird der Stream geschlossen. Mit freopen kann die mit stdin, stdout oder stderr verbundene Datei geändert werden.
Der in Aufrufen von freopen verwendete String mode kann einen der folgenden Werte annehmen:
r | Öffnet die Datei nur für Lesezugriffe. | w | Erstellt die Datei für Schreibzugriffe. . | a | Anhängen; die Datei wird für Schreibzugriffe am Ende der Datei geöffnet oder, wenn nicht vorhanden, für Schreibzugriffe erstellt. | r+ | Öffnet eine vorhandene Datei zum Aktualisieren (Lesen und Schreiben). | w+ | Erstellt eine neue Datei für Aktualisierungen (Lesen und Schreiben). | a+ | Zum Anhängen öffnen; öffnet oder, wenn nicht vorhanden, erstellt 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 String mode an (rt, w+t usw.). Für den Binärmodus hängen Sie entsprechend ein b an den String mode an (wb, a+b usw.).
Wird t oder b im String mode nicht angegeben, bestimmt die globale Variable _fmode den Modus. Ist _fmode auf O_BINARY gesetzt, werden Dateien im Binärmodus geöffnet. Ist _fmode auf O_TEXT gesetzt, werden Dateien im Textmodus geöffnet. Diese 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:
- Einer Ausgabe kann nicht direkt eine Eingabe folgen, ohne dazwischen fseek oder rewind aufzurufen.
- Einer Eingabe kann nicht direkt eine Ausgabe folgen, ohne dass dazwischen fseek oder rewind aufgerufen wird oder eine Eingabe erfolgt, die an das Dateiende gelangt.
Rückgabewert
Bei erfolgreichem Abschluss gibt freopen den Stream zurück, der ihr als Argument übergeben wurde.
Bei einem Fehler wird NULL zurückgegeben.
Beispiel
#include <stdio.h>
int main(void)
{
/* Die Standardausgabe in eine Datei umleiten */
if (freopen("OUTPUT.FIL", "w", stdout)
== NULL)
fprintf(stderr, "error redirecting stdout\n");
/* Diese Ausgabe geht an eine Datei */
printf("This will go into a file.");
/* Den Standardausgabe-Stream schließen */
fclose(stdout);
return 0;
}
Portabilität
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
freopen |
+ |
+ |
+ |
+ |
_wfreopen |
Nur NT |