hi,
ich möchte gern ein Datei einlesen mit hilfe ein c Programms.
Die einzulesende Datei ist eine Textdatei und ist Zeilenweise aufgebaut.
Hier ist mein anfang:
Das Prinzip sollte klar sein. Ich lesen solang zeichen ein bis ein \n auftaucht. Zuvor sicher ich aber die Position innerhalb der Datei.Code:int dateieinlesen(const char* dateiname, const list_t *l) { FILE* datei; int zeilenlaenge; char* zeilen_puffer; int ergebnis; datei = fopen(dateiname, "r"); if ( datei == NULL ) { ergebnis = FALSE; } else { while( !feof(datei) ) { zeilenlaenge = Zeilenlaenge(datei); zeilen_puffer = (char*) malloc( (zeilenlaenge+1) * sizeof(char) ); fgets(zeilen_puffer, zeilenlaenge+1, datei); free(zeilen_puffer); } fclose(datei); ergebnis = TRUE; } return ergebnis; } int Zeilenlaenge(FILE* datei) { int i; char zeichen; fpos_t alt_pos; fgetpos( datei, &alt_pos ); // Aktuelle Position merken. i=0; while ( ( zeichen = fgetc(datei) ) != '\n' && feof(datei) == FALSE ) { i++; } fsetpos( datei, &alt_pos ); // Zurück auf gemerkte Position. return (i+1); }
Dann reserviere ich mir den erfoderlichen Speicher und lesen die Zeile ein.
In der ersten Zeile klappt alles wunderbar, aber dann klapps nicht mehr. Das Problem ist, glaub ich , das das sichern der Dateipostion nicht geht.
Kann mir mal jemand ne kurzen Tipp geben ?







Zitieren

Lesezeichen