Wie kann ich an das Ende einer Datei springen.



  • Hallo,

    ich habe ine Textdatei, in die von einem Programm text geschrieben wird. bei erneuten aufruf des Programms, soll am ende der datei weiter geschrieben werden. leider wird bis jetzt der inhalt aber immer überschrieben. kann man irgendwie an das ende der datei springen?

    grüße





  • Hallo,

    irgendwie steig ich da nicht durch. ich habe einen zeiger auf die dat (log) wenn ich nun log.(std::ios::end); mache kommt ne fehlermeldung, ohne das std geht es auch nicht.

    😞



  • meinte natürlich log.seekg(...



  • Hallo,
    Kleines Beispiel. Vielleicht hilft es dir beim Verständnis. (Ungetestet)

    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
            if(argc != 2)
            {
                  cout << "\n Usage: test.exe inputfile.txt\n";
                  return -1;
            }
            ofstream out(argv[1], ios::out|ios::app); // Hier positionierst du den Dateizeiger vor jeder Schreib-Operation aufs Dateiende.
    
            out << /* Hier deine neuen Dateien anfügen */;
    
            // ...
            return 0;
    }
    

    Ansonsten kannst du auch mithilfe von seekp() den Put-zeiger aufs Dateiende positionieren um dort etwas neues hinzuschreiben.

    Beispiel:

    int main(int argc, char* argv[])
    {
           fstream f("test.txt", ios::in|ios::out|ios::binary);
    
           // ...
           f.seekp(0L, ios::end); // Put-Zeiger aufs Ende positionieren.
           f << /* Jetzt (am Ende) neue Daten hineinschreiben. */;
    
           // ...
           return 0;
    }
    

    Caipi



  • So wie du es schilderst kannst du auch gleich beim Öffnen an das Ende der Datei springen. Dazu nutzt man ios::ate.

    fstream f("test.txt", ios::in|ios::out|ios::binary | ios::ate);
    

    Das nur zur Ergaenzung.

    Gruss,
    DeSoVoDaMu


Anmelden zum Antworten