Moin!
Jetzt dachte ich mir naja da die option "a" bei fopen den Zeiger ans Ende stellt müßte r+ den zeiger nach vorne Stellen!
Ok jetzt hab ich aber das Problem, dass er den davor gespeicherten Text überschreibt ... :-/
Logisch. Wenn du vorne etwas anfügen wolltest, müßte der Computer auf der Festplatte für jedes gespeicherte Byte die gesamte Datei genau ein Byte nach hinten schieben, damit neuer Platz entsteht - also wahnsinnig viel kopieren. Das macht er aber nicht.
Hinten anhängen ist dagegen ganz einfach: Datei öffnen, das Ende finden, und weiterschreiben.
Lösung: Wenn du in einer Datei vorne was davorhängen willst, mußt du die gesamte Datei einlesen, das gewünschte davorhängen und den eingelesenen Rest dahinterhängen. Wahlweise kannst du auch die bisherige Datei umbenennen, eine neue Datei mit dem alten Namen anlegen, zuerst das Neue reinschreiben und dann den Inhalt der umbenannten Datei auslesen und in die neue Datei schreiben. Am Ende löschst du die umbenannte Datei.
Beide Methoden sind nicht wahnsinnig performant - bei einem Gästebuch mit grob geschätzt einem Eintrag pro Tag dürfte das aber kein Problem sein.
Die Alternative wäre, in der Datei einfach nur hinten dranzuhängen, und bei der Ausgabe umgekehrt zu sortieren - wäre aber auch nicht unbedingt besser, weil Gästebücher in der Regel mehr gelesen als beschrieben wären - allerdings kann das Sortieren im Speicher ablaufen, was durchaus schneller geht, als auf der Festplatte zu operieren.
- Sven Rautenberg
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)