Buchstaben in Datei erstezen
-
Könntet Ihr da mal drüber sehen? Also das ganze soll die gefundenen 'a' s in einer Textdatei durch X ersetzen.
Es funktioniert, aber ich glaube das ist ziemlich umständlich so??
int main(int argc, char *argv[]) { FILE *fp; fp=NULL; size_t siz; int i=0, j, c, here1, here; fp=fopen("test.txt", "r+"); if(!fp){ puts("error opening file"); exit(0); } while (!feof(fp)){ c=fgetc(fp); here1=ftell(fp); if (c == 'a'){ here=here1-1; i++; fseek(fp, here, SEEK_SET); fputc('X', fp); fseek(fp, here1, SEEK_SET); } putchar(c); } fclose(fp); printf(" \n %d -a gefunden", i); return 0; }
-
Das mit dem
while (!feof(fp)){
geht so nicht, da duEOF
erst nach einer Leseoperation feststellen kannst.
Darum:while ((c=fgetc(fp)) != EOF){
dann aber kein weiteres fgetc mehr.
Auf das
ftell
kannst du auch verzichten, da du beifseek
auch relativ zur aktuellen Position arbeiten kannst.fseek(fp, -1, SEEK_CUR); fputc('X', fp); fseek(fp, 0, SEEK_CUR);
Meist schreibt man aber in eine neue Datei, löscht dann die Originaldatei und benennt die neu Datei um.
So gehen bei einem Fehler keine Daten verloren.
-
Besten Dank, das waren eigentlich genau die Sachen die ich wissen wollte!