Einlesen von Dateien



  • Hallo,
    ich habe ein Programm geschrieben, dass die selbe Datei mehrfach liest. Beim
    ersten Lesen funktioniert noch alles, aber beim zweiten mal kann er die Datei
    nicht mehr öffnen. Kann mir mal jemand das erklären?

    Hier der Code (gekürzt):

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int readFile();     // diese zwei Funktionen sollen die Datei einlesen
    int readFile2();
    
    int main() {
        int rueckgabewert, rueckgabewert2;
    
        rueckgabewert = readFile();  // das funktioniert noch
        rueckgabewert2 = readFile2();  // aber das nicht mehr
    
        return 0;
    }
    
    int readFile() {
        ifstream file("test.txt");
        ...
        file.close();
        return blabla;   // im echten Programm gibt die Funktion dann
                         // einen Wert aus der Datei zurück
    }
    
    int readfile() {
        // eigentlich das selbe wie oben, nur wird ein anderer Wert
        // zurückgegeben
    }
    

    😕



  • Kann es sein, dass in einer der readFile Funktionen kein close gemacht wird? Hast ja den wichtigen teil vom code nicht gepostet, dafür aber tippfehler eingebaut ->copy & paste.



  • In beiden Funktionen kommt das Close vor. Das habe ich mir auch am Anfang
    gedacht!!!



  • sorry für die tippfehler



  • Dann poste mal den vollständigen Code beider Funktionen...



  • Hat sich erledigt. Die zweite Funktion hat beim falschen Zeichen begonnen zu
    lesen. Damit gab es dann einen falschen Rückgabewert und einen Fehler!



  • Ehm und der Aufruf von close wäre so oder so unwichtig gewesen 😛 🤡 Ehm zumindest solange wie du deinen filestream innerhalb der Funktionen aufm Stack erstellst. Dann ruft der Destruktor sowieso close beim Verlassen der Funktion auf!



  • D schrieb:

    Hat sich erledigt. Die zweite Funktion hat beim falschen Zeichen begonnen zu
    lesen. Damit gab es dann einen falschen Rückgabewert und einen Fehler!

    Dann konnte er sie aber doch öffnen 🙄



  • yepp


Anmelden zum Antworten