007
04.08.2004, 13:18 Uhr
virtual
Sexiest Bit alive (Operator)
|
Na, das ist doch schon was.
Also zunächstmal ist für Dein Problem nicht notwendig, groß im Speicher rumzufuhrwerken: Du liest am besten einfach die Daten, machst die Ersetzung on the fly und schreibst direkt. Allesandere ist ekelhaftes Gemurkse, wenn Du noch nicht so viel mit C gemacht hast.
Also etwa so:
C++: |
#include <stdio.h> #include <string.h>
int main() { char* eingabedatei = "datei1.txt"; char* ausgabedatei = "datei2.txt"; char* suchtext = "Datum"; char* ersetzung = "\nDatum"; FILE* rein; FILE* raus; char buffer[1024]; /* Wir nehmen mal vereinfachend an, daß eine Textzeile nicht länger als 1023 Zeichen sein kann */ size_t len; char* p1; char* p2;
/* Dateien öffnen */ rein = fopen(eingabedatei, "r"); if (rein==NULL) { fprintf(stderr, "Kann %s nicht lesen.\n", eingabedatei); return 1; } raus = fopen(ausgabedatei, "w"); if (raus==NULL) { fclose(rein); fprintf(stderr, "Kann %s nicht schreiben.\n", ausgabedatei); return 2; }
/* Lesen + ersetzen + schreiben */ while(fgets(buffer, sizeof(buffer), rein)) { p1 = buffer; while ((p2=strstr(p1, suchtext))!=NULL) { fwrite(p1, 1, p2-p1, raus); fwrite(ersetzung, 1, strlen(ersetzung), raus); p1 = p2+strlen(suchtext); } if (*p1) fwrite(p1, 1, strlen(p1), raus); }
fclose(raus); fclose(rein); }
|
-- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |