[C] Textdatei vorne Zeilen einschieben

klanawagna

Erfahrenes Mitglied
Hallo Leute!

Ich bräuchte Hilfe! Gibt es irgendwie die Möglichkeit, Zeilen statt mit append Hinten einzufügen, vorne einzufügen, so dass alle Zeilen dahinter nachrücken?

Danke!
 
Ich glaube das gibt es nicht.
Aber du kannst erst alle Zeilen einlesen und in ein Array speichern. Danach fügst du einfach deine neue Zeile beim Array vorne ein und speicherst das Array wieder zeilenweise in die Datei.
 
Du könntest ja statt dem Array direkt in eine andere Datei schreiben.
Die alte löschen und die neue umbenennen.
 
Du könntest beim Datei öffnen die Zeigerposition an den Anfang der Datei stellen und dann die Informationen reinschreiben. Dann müsste sich alles andere nach hinter verschieben.
Nein. Damit würden man nur den Anfang der Datei überschreiben.

Naja, es geht um Gigabytegroße Logdateien, da is in ein Array schreiben schlecht.
Logdateien von mehreren Gigabytes? Das ließe sich vielleicht über Logrotation vermeiden.

Eine Möglichkeit, die noch nicht genannt wurde: wenn der am Anfang einzufügende String x Zeichen enthält, dann lege zwei Puffer jeweils der Größe x an. Dann:

  1. Schreibe den neuen String in Puffer 1.
  2. Lies die nächsten x Zeichen aus der Datei und lege sie in Puffer 2 ab.
  3. Gehe in der Datei x Zeichen zurück und schreibe Puffer 1 in die Datei.
  4. Vertausche Puffer 1 und 2.
  5. Wenn Ende der Datei noch nicht erreicht, gehe zu 2.

Damit musst du weder die gesamte Datei in den Speicher laden noch eine neue Datei anlegen.

Grüße,
Matthias
 
Zurück