Zeile in einer Textdatei ersetzen



  • Ich kam jetzt endlich dazu, das ganze mal auszuprobieren. Es geht nicht !
    Ich hab keine ahnung warum. Ich schreibe in meine Datei ein paar Zeilen und merke mir dann die Stelle. Dann schreibe ich 16 Zeile mit Werten, die aber nicht die richtigen sind. Am Ende springe ich mit fseek zu dieser stelle und schreibe wieder 16 Zeilen. Das funktioniert zwar, allerdings fehlen danach 4 Zeilen in der Textdatei ?! Ich hab gedacht, dass einfach die 16 Zeilen überschrieben werden...

    Woran kann denn das liegen ???



  • Also, es liegt wohl daran, dass die ersten 16 Zeilen eine andere Länge haben, wie die neuen 16. Ich hab aber keinen Schimmer, wie man das umgeht.



  • @nfaa, das was du machen willst, funktioniert nur wenn alle Zeilen gleich lang sind. Wenn es nicht zu viel Speicherplatz kostet, würde ich alle Zeilen bis zu einer gewissen Länge mit irgendeinem Zeichen auffüllen.



  • ja,
    ich schreib jetzt alle Zahlen mit der gleichen Formatierung, also sowas wie "%15.5f". Jetzt geht es. Ich hätte ja nie gedacht, dass ich das mal sage, aber bei hex dateien geht das einfacher 🙂



  • nfaa schrieb:

    ja,
    ich schreib jetzt alle Zahlen mit der gleichen Formatierung, also sowas wie "%15.5f". Jetzt geht es. Ich hätte ja nie gedacht, dass ich das mal sage, aber bei hex dateien geht das einfacher 🙂

    nein. einfügen kannst dann trotzdem nicht



  • @Shade Of Mine
    Einfügen geht nicht, aber ich kann die Stelle überspringen und einfach später an die Stelle schreiben. Im Hex-Format sind die Längen klar definiert, z.B 16 oder 32 Bit. Beim Text macht ein Zeichen schon einen Unterschied in der Länge.



  • und wenn du mit einer kleinen funktion die zeilenlänge vorher ausliest und anschließend löschst?



  • nfaa schrieb:

    @Shade Of Mine
    Einfügen geht nicht, aber ich kann die Stelle überspringen und einfach später an die Stelle schreiben. Im Hex-Format sind die Längen klar definiert, z.B 16 oder 32 Bit. Beim Text macht ein Zeichen schon einen Unterschied in der Länge.

    Das hat mit hex aber nichts tun, sondern einfach damit wie du das format definierst. speichere doch die zahlen doch binär und gut ist. dazu brauchst du kein hex.



  • @Krugman, das geht ja halt nicht. Wenn die Zeilen wirklich unterschiedlich lang sind, muss er alle Daten ab der zu verändernden Zeile zwischenspeichern, die Daten abändern und anschließend den Zwischenspeicher wieder schreiben.



  • @Shade Of Mine
    mit "hex" meinte ich eigentlich binär 🙂 Hab mich echt saublöd ausgedrückt.

    Binär speichern geht aber nicht. Das Dateiformt ist nunmal ein ASCII-Format.


Anmelden zum Antworten