Wert in Klammern



  • Hallo zusammen,

    ich habe in einer Textdatei Zahlen zwischen zwei Klammern ()
    davor und dahinter steht meist auch etwas. Wie kann ich den Wert in den Klammern ersetzen ?

    BSP.:

    Klaus(10.2.1980)
    Peter(11.04.1850)Leipzig
    Pete(1850)Köln

    Ausgabe soll z.B. dann so sein:

    Klaus(23)
    Peter(12)Leipzig
    Pete(15)Köln

    Die Werte in den Klammern habe ich als Variablen bereits gesucht und gespeichert. Auch die neuen Werten liegen als Variable vor.
    Nun weiß aber nicht wie ich die sich ändernden Werte austausche. 😕
    Vielleicht hat jemand einen Tipp... 👍



  • Du musst alles in eine neue Datei schreiben.



  • Hallo Dirk,

    Leider kann dies nicht in einer neuen Datei stehen.
    Ich hätte gedacht, dass ich den Wert zwischen den Klammern suche und mit memmove lösche. Danach den neuen Wert zwischen den Klammern einfüge. Leider bin ich mir nicht sicher, wie ich das genau umsetzen soll...



  • TheodorN. schrieb:

    Leider kann dies nicht in einer neuen Datei stehen.

    Das wird es aber müssen. In der bestehenden Datei rumpfuschen kannst Du nur, indem Du zB 3 Zeichen mit 3 anderen Zeichen überschreibst. Du willst aber x Zeichen durch y Zeichen ersetzen, also die Größe ändern.

    Lies die ganze Datei ein, mache Deine Änderungen im Speicher und schreibe die ganze Datei unter demselben Namen neu.

    Oder - lies Zeile für Zeile, schreibe die geänderten Zeilen in eine andere, temporäre Datei, und wenn Du fertig bist, lösche die Ursprungsdatei und benenne die neue Datei um.

    Das sind Deine Optionen.



  • Mit low-level IO würde auch der Rewrite fruchten - man muss dann allerdings dafür sorgen, dass jede Zeile gleich lang ist und ggf bis Zeilenende mit space füllen.
    Ist aber vieeeel umständlicher wie die vorgenannte Lösung und eher was für Datenbanksysteme usw). Auch nach dem Editieren einer solchen Datei kann es dann natürlich je nach Editor Probleme geben, so der die Zeilenlängen neu berechnen sollte. Stichworte ftell fseek usw..



  • danke für die Tipps, wenn auch nicht sehr zufriedenstellend.

    Ist dies nur in C so oder auch in C++ ?



  • ...



  • pferdefreund schrieb:

    Mit low-level IO würde auch der Rewrite fruchten - man muss dann allerdings dafür sorgen, dass jede Zeile gleich lang ist und ggf bis Zeilenende mit space füllen.

    Nein.


  • Mod

    Belli schrieb:

    pferdefreund schrieb:

    Mit low-level IO würde auch der Rewrite fruchten - man muss dann allerdings dafür sorgen, dass jede Zeile gleich lang ist und ggf bis Zeilenende mit space füllen.

    Nein.

    Doch. Er meint genau das gleiche wie du. Der Begriff low-level ist ungünstig gewählt.



  • Nö. Es muss keine Zeile gleichlang sein. Es muss überhaupt keine Zeile vorhanden sein. Was ist überhaupt eine Zeile aus Sicht einer Datei?



  • Belli schrieb:

    Nö. Es muss keine Zeile gleichlang sein. Es muss überhaupt keine Zeile vorhanden sein. Was ist überhaupt eine Zeile aus Sicht einer Datei?

    Dss Linefeed-Zeichen. :p



  • Aha ... und ... glaubst Du, das kann auch mal in einer jpg-Datei vorkommen? Nee, die hat ja keine Zeilen, gelle?



  • Belli schrieb:

    Aha ... und ... glaubst Du, das kann auch mal in einer jpg-Datei vorkommen? Nee, die hat ja keine Zeilen, gelle?

    Schau sie dir mit einem Texteditor an. Du wirst erstaunt sein. 😃



  • Lass mal, Du erstaunst mich schon genug.
    Edit:
    Übrigens war die Frage nicht, was eine Zeile aus Sicht eines Texteditors ist, sondern aus Sicht einer Zeile.



  • Belli schrieb:

    Übrigens war die Frage nicht, was eine Zeile aus Sicht eines Texteditors ist, sondern aus Sicht einer Zeile.

    Was ist etwas aus der Sicht von etwas anderem der gleichen Art, oder von sich selbst? Darüber ließe sich ein philosophischer Aufsatz schreiben.



  • Zur not kannst du alles in den RAM lesen und dann hinterher die Datei überschreiben. Das wird bei großen Dateien aber problematisch.



  • Z schrieb:

    Belli schrieb:

    Übrigens war die Frage nicht, was eine Zeile aus Sicht eines Texteditors ist, sondern aus Sicht einer Zeile.

    Was ist etwas aus der Sicht von etwas anderem der gleichen Art, oder von sich selbst? Darüber ließe sich ein philosophischer Aufsatz schreiben.

    Ja, ich habe mich ja auch selbst falsch zitiert:

    "... sondern aus Sicht einer Zeile."

    sollte

    "... sondern aus Sicht einer Datei."

    heißen.


Anmelden zum Antworten