ein Kapitel zurück                                           ein Kapitel weiter

Zuerst den Syntax von freopen...

FILE *freopen(const char *pfad,const char *modus,FILE *datei);

Mit freopen wir zuerst versucht die Datei zu schließen auf die der FILE - Zeiger datei zeigt. Fehler beim schließen werden ignoriert. Danach wird der FILE - Zeiger der Datei die sie in pfad angegeben haben zugeordnet. Mit dem modus gilt das selbe wie bei fopen die sie bereits kennen gelernt haben. Hierzu nun ein Beispiel...

/*Download:freopen.c*/
#include <stdio.h> #include <stdlib.h> #define MAX 80 int main() { FILE *quelle; char datei1[20],datei2[20]; char puffer[MAX]; printf("Welche Datei wollen sie als erste lesen : "); scanf("%s",datei1); printf("Welche Datei wollen sie anschließend lesen : "); scanf("%s",datei2); if((quelle=fopen(datei1,"r")) == NULL) { fprintf(stderr,"Fehler bei oeffnen von %s\n",datei1); exit(0); } while(fgets(puffer,MAX,quelle) != NULL) fputs(puffer,stdout); printf("\n"); freopen(datei2,"r",quelle); while(fgets(puffer,MAX,quelle) != NULL) fputs(puffer,stdout); return 0; }

Mit der Zeile....

freopen(datei2,"r",quelle);

...haben wir uns ein Schließen der Datei mit fclose und ein öffnen der Datei datei2 erspart. Da mit freopen die Datei auf die unser FILE - Zeiger (datei1) automatisch geschlossen wurde und der FILE - Zeiger quelle auch gleich auf die Datei mit dem Pfad datei2 übergeben. Nun wird freopen aber nicht unbedingt so angewandt wie ich es Ihnen gezeigt habe, da freopen nicht überprüft ob die Datei auf die der FILE - Zeiger quelle zeigt Probleme mit dem Schließen hatte. Ein Fehler wird schlichtweg ignoriert.

freopen wird hauptsächlich dazu benutzt die Dateizeiger stdin, stdout und stderr zu verbinden. In einfachen Worten die Standartein. -bzw. Ausgabe umzuleiten. Hierzu ein einfaches Beispiel...

/*Download:freopen2.c*/
#include <stdio.h> int main() { printf("Wir schreiben eine Datei \"log.txt\"\n"); freopen("log.txt","a+",stdout); printf("Dieser Text steht in der Datei \"log.txt\"\n"); return 0; }

Hier wird z.B. die Standartausgabe in die Datei log.txt umgeleitet. Das erste printf wird noch auf dem Bildschirm ausgegeben. Das zweite dagegen wir in die Datei log.txt geschrieben die im selben Verzeichnis in dem sie diese Programm ausführen stehen sollte.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf