015
04.08.2004, 14:49 Uhr
~gastmann
Gast
|
C++: |
char* eingabedatei = "c:\\datei.txt"; char* ausgabedatei = "c:\\datei2.txt"; char* suchtext = "Wort1:"; char* ersetzung = "\nWort1:";
char* suchtext2 ="Wort2:"; char* ersetzung2="\nWort2:"; char* suchtext3 ="Datum:"; char* ersetzung3="\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) if((p2=strstr(p1, suchtext))!=NULL) { fwrite(p1, 1, p2-p1, raus); fwrite(ersetzung, 1, strlen(ersetzung), raus); p1 = p2+strlen(suchtext); } if((p2=strstr(p1, suchtext2))!=NULL) { fwrite(p1, 1, p2-p1, raus); fwrite(ersetzung2, 1, strlen(ersetzung2), raus); p1 = p2+strlen(suchtext2); } if((p2=strstr(p1, suchtext3))!=NULL) { fwrite(p1, 1, p2-p1, raus); fwrite(ersetzung3, 1, strlen(ersetzung3), raus); p1 = p2+strlen(suchtext3); }
if (*p1) fwrite(p1, 1, strlen(p1), raus);
}
fclose(raus); fclose(rein); system("copy c:\\datei2.txt c:\\datei.txt"); system("del c:\\datei2.txt");
|
so funktionierts einwandfrei - verstehe nicht, warum ich nu nen denkfehler mache - habs probiert und meine datei wird perfekt umgeschrieben. sogar, wenn suchtext, suchtext1 und suchtext2 in einer zeile steht. hatte jetzt auch keinen error - wirklich ne geile sache. |