an eine bestimmte Stelle der Datei schreiben



  • Hallo an alle, habe momentan ein Problem wo ich Expertenhilfe gebrauchen könnte.
    Ich habe eine Eingabedatei. Nun möchte ich die Zeilen der Eingabedatei in einer anderen Reihenfolge in eine Ausgabedatei schreiben. Beispielsweise will ich die erste Zeile der Eingabedatei an die 6. Zeile der Ausgabedatei schreiben. 2. an die 15. usw. Ich möchte nicht die einzelnen Zeilen erst rauslesen, zwischenspeichern, sortieren in der REihenfolge in der sie in die Ausgabedatei reinkommen würde, um sie dann in dieser richtigen REihenfolge in Ausgabedatei zu schreiben, sondern gleich an die entsprechenden Stellen der Ausgabedatei setzen. Wobei die Ausgabdatei auch vorher noch gar nicht existiert also anfangs auch noch leer ist. Geht sowas überhaupt, in eine leere Datei gleich an die 6.Stelle zu schreiben?
    Wenn ja, wie kann ich das machen? Habe es schon mit der Funktion fseek versucht. Das Problem ist hierbei aber zum Einen, dass ich es in Bytes angeben muss und ich nicht weiß wenn ich eine Zeile an die 6.Stelle setze wie viele Zeichen die Zeilen davor besitzen und zum anderen setzt er ständig viele \\nn zwischen der 1 und der 5 Zeile wenn ich beispielsweise etwas an die 6. Stelle setzen will.
    Ich hoffe ich habe mein Problem einigermaßen erklären könnten.



  • Das geht so wie du es dir denkst, nicht. Du kannst nicht hinter das Dateiende positionieren, fseek würde entsprechend fehlschlagen.
    Ich empfehle dir, ein Mapping mit den Zeilen-Strings im Hauptspeicher zu machen, obwohl du das nicht willst.
    Statt zeilenweise in ein Stringarray zu lesen, dort rumzuändern und das Stringarray dann abschließend in eine Datei rückzuschreiben, kannst du dir auch mal die (Nichtstandard)Funktion fmemopen anschauen, damit kannst du auf einem String wie auf einer Datei arbeiten.


Anmelden zum Antworten