Datei öffen, Funktionsübergreifend darauf zugreifen...Wie?

cler

Mitglied
Hallo zusammen,

ich stehe vor folgendem Problemchen. Ich habe eine Funktion, in der ich eine Datei öffne.

FILE *datei
datei = fopen("C:\\TEST.DAT", "rt"))

Nun rufe ich eine Funktion auf, in der ich auf die geöffnete Datei zugreifen möchte. Bisher mache ich es so, dass ich die Datei in der ersten Funktion öffne, mit ihr arbeite und die Datei dann wieder schließe, dann die neue Funktion aufrufe, die Datei wieder öffne und wieder mit der Datei arbeite. Gibt es auch die Möglichkeit die Datei zu öffnen und irgendwie in der nächsten Funktion wieder darauf zugreifen zu können. Ich habe schon ein wenig rumgespielt, aber in der aufgerufenen Funktion wird alles übersprungen, weil es so sheint, als wenn die Datei nicht geöffnet sei.

Fände prima, wenn mir jemand die Lampe im Kopf anzünden könnte.

Grüße
 
Hallo,
das könnte so gehen:

Code:
#include <stdio.h>

void printFileContent(FILE* filedesc){

        char buffer[200];
        while(!feof(filedesc)){

                fscanf(filedesc, "%s\n", buffer);
                printf("%s\n", buffer);
        }
}

int main(){

        FILE* fd;
        fd = fopen("test.dat", "rt");
        printFileContent(fd);        
        fclose(fd);
}

Gruß

RedWing
 
Hallo,

wenn ich das so mache, läuft das Programm bis in die Zeile:

while(!feof(filedesc)){

und verlässt dann sofort die Schleife wieder und das Programm läuft ohne Fehlermldung zu ende.

Grüße
 
Hallo,

wenn ich das so mache, läuft das Programm bis in die Zeile:

while(!feof(filedesc)){

und verlässt dann sofort die Schleife wieder und das Programm läuft ohne Fehlermeldung zu ende.

Hast du mal geprüft ob das File überhaupt augelesen wird.

Also bei mir läuft obiger Code ohne Probleme...
Vielleicht solltest du ihn mal nehmen und einfach 1 zu 1 testen ob er bei dir auch
läuft, was ich mal annehme, dann kannst du dir sicher sein das der Fehler
in deinem Programmliegt. Zur Not auch mal Schritt für Schritt durchdebuggen
bzw wenn du das schon gemacht hast, überprüfe mal ob das file test.dat
auch im richtigen Ordner mit dem richtigen Namen liegt.
Du kannst dir auch fd bzw filedesc angucken ob der null ist...

Gruß

RedWing
 
Zuletzt bearbeitet:
Hallo,

ich habs. Ich öffne die Datei und durchlaufe sie bis zum ende. Dann rufe ich eine andere Funktion auf und will wieder auf die Datei zugreifen. Bei mir hörte das Programm schon bei
while(!feof(filedesc)){ auf. Das kam daher, dass ich die Datei ja bis zum Ende durchlaufen habe und dann die andere Funktion aufrufe. Wenn ich dann wieder in die Datei gehe, stehe ich am Ende der Datei und das PRogramm meint, dass ich schon am Ende angekommen bin. Ichspringe nun zuerst mit fseek wieder an den Anfang de Datei und schon gehts.

Vielen Dank für die Hilfe.

Schönen Abend noch.

Grüße
 
Zurück