Problem bei Dateiende!
-
Also und zwar bricht er nicht ab sofern das Dateiende erreicht ist! Woran mach das liegen? Ich versuche schon wochenlang das zu lösen aber nu sehe ich keinen ausweg mehr!
das ist die Funktion die die daten aus der datei in eine struktur einliest!
void get(void) { FILE *datei; int i,j=0; char temp, temp2[20]; if (done == 1) { datei = fopen(file, "r+b"); if (datei != NULL) { while (! feof(datei)) { i=0; do { temp = getc(datei); temp2[i] = temp; i++; } while ( temp != ';'); temp2[i] = '\0'; strcpy(daten[j].kuenstler, temp2); i=0; do { temp = getc(datei); temp2[i] = temp; i++; } while ( temp != ';'); temp2[i] = '\0'; strcpy(daten[j].album, temp2); i=0; do { temp = getc(datei); temp2[i] = temp; i++; } while ( temp != ';'); temp2[i] = '\0'; strcpy(daten[j].verb, temp2); i=0; do { temp = getc(datei); temp2[i] = temp; i++; } while ( temp != '\n'); temp2[i] = '\0'; strcpy(daten[j].name, temp2); j++; } printf("%s", daten[0].kuenstler); } fclose(datei); } else printf("Bitte erst Datei auswaehlen!\n\n"); getch(); }
Sie funktioniert wunderbar nur erkennt er nicht wann das dateiende erreicht ist und macht demnach daraus eine endlosschleife! Ich hoffe jemand kann mir sagen warum es dieses mal nicht geht!
Mfg donzero
-
feof() erkennt das Dateiende erst, wenn das Dateiende auch gelesen wird! Wenn du dir auf dieser Seite http://www.cplusplus.com/ref/cstdio/getc.html mal anschaust, was zurückgegeben wird, wenn das Dateiende gelesen wurde oder ein Fehler aufgetaucht ist und das dann mit deinen Bedingungen vergleichst, dann solltest du wissen, warum du eine Endlosschleife hast.
-
Alles klar danke schön!