Dateimanipulation

july

Erfahrenes Mitglied
Hallo zusammen,

ich hab da mal eine Frage. Ich hab eine Datei, die aus mehreren Zeilen besteht, wie kann ich eine bestimmte Zeile ersetzen.

Grüße July
 
Ich habe es mal so gemacht, eine Schleife, und pro schleifen durchlauf ein zeile weiter gehen.
dann mit seek und tellg (hieß es glaub ich) die Bytes zählen und die gezählten bytes mit den neuen ersetzen
Hoffe das ich mich nicht vertan habe wenn doch einfach verbesser:D
Habe das schon lange nicht mehr gemacht :D
MFG
 
Du könntest zuerst alle Zeilen in ein Array laden (aber nicht unbedingt nötig) und dann deine Zeile ersetzen.

@MSVC++

Dann müsste man aber die Länge der einzelnen Zeilen wissen, oder?
Bei "meiner" Variante muss das die Datei einfach anhand der Newlines (\r, \n, \r\n) splitten.
 
Das Problem ist, dass ich nicht den Inhalt auslesen möchte um neu zuschreiben, sondern direkt in der Datei die Zeile überschreiben.
 
Hi,

bin selbst noch in den Anfängen, aber wie ist denn die "bestimmte" Zeile gekennzeichnet?
Durch ein bestimmtes Wort z.B.?
Dann könnte man doch die Datei mit strchr nach diesem durchsuchen und an der Stelle mit Hilfe einer if-Bedingung weiterarbeiten, oder?

Wenn es nach Zeilen geht, halt einen Zähler mitlaufen lassen und dann eben Zeile xy ersetzen.

So würde ich mir das vorstellen, naja, wie gesagt, bin noch Anfänger.
 
Also ich kenn die Zeile, die ich ersetzen möchte (z.B. 5. Zeile möchte ich neu beschreiben). Mein Problem ist, dass ich nicht weiß wie ich zu einer bestimmten Zeile ankomme um sie zu ersetzen
 
Hallo,

Du kannst einfach zeichenweise auslesen und die '\n' zählen. Wenn du z.B.: mit fgetc ließt steht dann der Filepointer schon an der richtigen Stelle.
 
Hi

Ersetzen in Dateien ist sowieso nicht gerade möglich...
Sobald die neue Zeile eine andere Länge als die alte hat kannst du die Datei gleich neu schreiben.

Gruß
 
@ComFreek Diel länge der einzelnen Zeilen könnte man auch einfach in bytes auslesen dann hat man ja auch zeichen und zeilen länge, oder?
MFG
 
@ComFreek Diel länge der einzelnen Zeilen könnte man auch einfach in bytes auslesen dann hat man ja auch zeichen und zeilen länge, oder?
MFG

Ja, aber wie sheel sagte, die zu ersetzende Zeile müsste die gleiche Länge haben.
Sonst wird im Prinzip schon in die nächste geschrieben.

Ich finde alles in ein Array zu laden ist immer noch am einfachsten, wenn nicht unbedingt schnellsten.
 
Zurück