Hallo,
wie kann man eigentlich in Files bestimmte Zeilen löschen? In den
Büchern (Tutorials) wird ja beschreiben wie man Dateien öffnet /
erstellt.
Aber wie kann man eine Datei öffnen und dann z.B. die erste Zeile
löschen (in Standard-C).
Oder an bestimmter Position Text in eine (bereits vorhandene) Datei
einfügen?
Mit fseek klappt es irgendwie auch nicht. Ich dachte das würde 654321
ergeben.(es ergibt aber 123456)
zitter_ned_aso schrieb:> fseek kann man beim Schreiben gar nicht benutzen?
Doch, kannst du - aber das hilft dir nicht. Du kannst damit eine Zeile
durch eine gleich lange andere überschreiben, wenn du willst, aber du
kannst nach fseek() keine Zeile löschen oder einfügen.
Das hilft trotzdem nichts. Es gibt keine Methode in C, mit der man in
Dateien Bereiche entfernen oder einfügen könnte. Das muss man schon "zu
Fuß" machen.
Johannes S. schrieb:> In dem Beispiel dürfte nur ein Zeichen in der Datei übrig> bleiben,
ja, das stimmt.
Im "w"-Modus steht da nur das letzte Zeichen (wenn man nach jeder
Zeichen-Ausgabe einen Schritt zurückgeht).
Einfach nur was dazwischen quetschen, geht so nicht.
zitter_ned_aso schrieb:> wie kann man eigentlich in Files bestimmte Zeilen löschen?
Gar nicht.
> In den Büchern (Tutorials) wird ja beschreiben wie man Dateien öffnet /> erstellt.>> Aber wie kann man eine Datei öffnen und dann z.B. die erste Zeile> löschen (in Standard-C).
Indem man die Datei bis auf diese Zeile komplett neu schreibt.
> Oder an bestimmter Position Text in eine (bereits vorhandene) Datei> einfügen?
Auch das geht nicht. Du musst dann alles, was danach kommt, auch nochmal
neu in die Datei schreiben.
Eine Datei ist im Prinzip so ähnlich wie ein Array, nur dass es auf der
Festplatte ist statt im RAM und dass es nur einen einzelnen Zeiger gibt,
über den man darauf zugreifen kann. Mit fseek wählst du dabei, wohin
dieser zeigen soll.