gehe zur letzten frein Zeile in einer Datei



  • HAllo ich habe ein kleines Problem:

    Ich öffne ich meinem c++ prog eine Datei und will da IP Adressen eintragen.
    jetzt gebe ich die adressen aber nach ein ander ein, sollen also in der *.txt untereinander aufgeführt werden.
    Wie bekomme ich es hin das er nach dem öffnen der datei in die letzte freie Zeile springt und da dann die nächste adresse einträgt?

    Mit eof()? nur wie wenn ja ?

    Dankeschööön ! :p



  • wenn std::ofstream verwendest std::ios::app übergeben
    bei fopen mit a+ öffnen...



  • so mache ich es im mom:

    ofstream aus ("c:\\c++\\neu1konf.txt");
    // Öffnen (evtl. erst kreieren) der Datei
    // "aus.dat" zum Schreiben

    if (aus)
    // Abfrage, ob Datei bereit zum Schreiben
    {
    aus << 1 << " " << ip[0] << "." << ip[1] << "." << ip[2] << "." << ip[3];
    aus.close ();
    // Datei wieder schließen
    }
    else cerr << "Datei nicht da!";
    return ;

    Danach kommt das gleiche noch mal für eine andere ip adresse



  • Mach's wie von Windalf bereits gesagt.

    Beispiel: (Ungetestet)

    int main(int argc, char* argv[])
    {
            if(argc != 3)
            {
                    cout << "\n Usage: test.exe file_name ip_adress\n";
                    return -1;
            }
            else
            {
                    fstream file(argv[1], ios::in|ios::out|ios::app); // Datei zum lesen und schreiben öffnen und aufs Dateiende positionieren.
                    file << argv[2] << endl;
            }
            return 0;
    }
    

    Caipi



  • ofstream aus ("c:\\c++\\neu1konf.txt", std::ios::app); // alles wird an das Ende der Datei angehängt
    

    Lese dir doch die Postings genauer durch und versuche mittels Internet-Recherche den Rest herauszubekommen, wie du dein Problem lösen kannst.



  • Du hast noch die Möglichkeit, nachdem du die Datei im Anhängmodus geöffnet hast, den internen Dateizeiger zu setzen.
    seekp(offset, param) und seekg(offset,param) sollten da eine nützliche Hilfe sein.
    In offset kannst du die Anzahl der Bytes, um die du verschieben willst, eintragen.
    0 würde hier reichen. Als param sollte für das Dateiende ios::end ausreichen.
    seekp fürs reinschreiben seekg fürs auslesen.



  • und was ist mit

    ofstream out("datei.txt",ios::ate)
    

    😕



  • Hallo nochmal, auch wenn ihr alle gleich versteht, etwas mit dem quellcode anzufangen, bin ich nur ein newbee und verstehe nur Bahnhof, ich fange gerade erst an mit c++ und verstehe (finde auch nix dolles darüber im netz)den syntax nicht :

    std::ios::app

    was ist std, ios (input out system?!) app (application?!) und :: ????
    wenn ich es so code bringt mein compiler folgendes :

    \netzwerkkonfig\config.cpp(129) : error C2653: 'std' : Keine Klasse oder Namespace

    Auch wenn ihr jetz die hände überm kopf zusammen schlagt würde ich mich echt freun wenn mir es einer für dummies erklären könnte

    Dankeschöön 😃



  • #include <fstream>
    
    int main()
    {
        std::ofstream aus ("file", std::ios::app); // alles wird an das Ende der Datei angehängt
        aus << "text kommt hiein";
    }
    

    Dieser Beispiel-Code sollte demonstrieren, wie du es implementieren kannst.
    std steht für Standard und ist ein Namensraum, in dem alle Klassen von der C++ Standard Bibliotek sind. :: ist ein Operator, genauer heißt er Bereichsoperator. app steht für append, also anhängen. Hoffe, es ist nun klarer. Mit den Begriffen lässt sich googlen oder in einem Buch nachschlagen. 🙂


Anmelden zum Antworten