einzelnes Zeichen in Datei löschen
-
hallo allerseits,
ich suche nach einer einfachen Moglichkeit ein einzelnes Zeichen aus einer (Text)datei zu löschen, möglichst ohne die Datei vorher in einen String oder so zu einlesen zu müssen.ich hab schon alle möglichen escape-sequenzen mit fputc probiert, aber anstatt z.b. ein Backspace auszuführen, schreibt mir das Programm ein <BS> in die Datei..
weiss irgendjemand weiter?, weil ich irgendwie nicht mehr..
-
fopen r+b
fseek
fwrite / fputc"anna" -> "anAa"
-
hm danke erstma für die antwort,
genauso bin ich auch vorgegangen, ich habs hinbekommen mit fseek und fputc ein zeichen zu überschreiben, also aus z.b. "anna " "anAa" zu machen, aber ich will ein zeichen komplett löschen, so das aus "anna" z.b. "ana" wird und das funktioniert mit der combo nicht..
-
ich fürchte du musst dann den stream ohne das zu löschende zeichen kopieren, also einen temporären dateistream erstellen, mit fread/fwrite die datei bis zum zeichen in den neuen stream kopieren, das zeichen auslassen, und den rest kopieren.
-
(wenns die gleiche datei sein soll, dann natürlich das ganze wieder zurück kopieren)
-
wenn das ganze ein editor werden soll
spricht nix dagegen einen genügend großen buffer im speicher zu erzeugen, sagen wir auf heutigen rechnern 1024KB und die große datei "in stücken" bei bedarf nach zu laden, je nachdem welchen abschnitt der datei der user gerade bearbeitet.
ändert sich der inhalt des buffers und will der user in einen bereich der datei, welcher noch nicht geladen ist, dann den buffer in die schon erwähnte temporäre datei schreiben... am schluss einfach den inhalt der temporären datei in die richtige schreiben...(sorry, mir war grad langweilig :-D)