Fehler bei Ein- und Ausgabe binärer Dateien



  • Ich teste einen Code zur Ein- und Ausgabe von binären Dateien. Dabei wird immer der letzte Datensatz doppelt ausgegeben. Wo liegt der Fehler?

    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    int main()
    {
    
        int zahl, antw;
    
        fstream f;
    
        f.open("datei", ios::out| ios::binary);
    
        do
        {
            cout << "Wert  :    " ; cin >> zahl;
    
            f.write((char*)&zahl, sizeof(zahl));
            cout << "Weiter? (ja-1; nein -2):  ";
            cin >> antw;
        }while (antw ==1);
    
        f.close();
    
        f.open("datei", ios::in| ios::binary);
    
        while (!f.eof())
        {
            f.read((char*)&zahl, sizeof(zahl));
            cout << zahl << endl;
        };
    
        f.close();
    
        return 0;
    }
    


  • pappel schrieb:

    while (!f.eof())
        {
            f.read((char*)&zahl, sizeof(zahl));
            cout << zahl << endl;
        };
    

    Das liest halt einmal zuviel.
    Du prüfst, liest, verarbeitest.
    Sinnvoll wäre lesen, prüfen, verarbeiten.

    while (f.read((char*)&zahl, sizeof(zahl)))
        {
          cout << zahl << endl;
        };
    

    Der Code riecht nach schlechtem Buch/Internettutorial.
    Kauf Dir ein ordentliches Buch.
    Siehe z.B. hier: Bücher und Tutorials zu C++

    Und editier bitte Deinen Beitrag und wähle die richtigen Tags - [cpp][/cpp]



  • pappel schrieb:

    Ich teste einen Code zur Ein- und Ausgabe von binären Dateien. Dabei wird immer der letzte Datensatz doppelt ausgegeben. Wo liegt der Fehler?

    Ich wuerde mal sagen, der Fehler liegt da, wo jemand die Doku zu fstream::read und fstream::eof nicht gelesen und keinen Debugger benutzt hat. So als Tipp fuers naechste Mal.



  • Danke für die Hinweise.



  • pappel schrieb:

    Danke für die Hinweise.

    Gerngeschehen.
    Und meine Bitte Deinen Beitrag zu editieren ignorierst Du?


Log in to reply