Aus Datei auslesen bis EOF ?????
-
Hi,
habe folgende Funktion bisher geschrieben. Wie kann ich die Schleife solange durchlaufen lassen bis End of File erreicht ist und er dann weiter macht ????
Das ist nicht die ganze Funktion, das ist hier auch nicht nötig es geht ja nur darum wie ich die Bedingung mit EOF einbaue.
int i;
// do {
/*Wir lesen alle Adressen aus "der Datei"*/for (i=0; i< ????? (hier soll irgendwie EOF hin aber wie ) ; i++)
{
fread(f_mitglieder[i].mtgnr,8,1,output);
fread(f_mitglieder[i].vorname,32,1,output);
fread(f_mitglieder[i].nachname,32,1,output);
fread(f_mitglieder[i].strasse,32,1,output);
fread(f_mitglieder[i].plz,8,1,output);
fread(f_mitglieder[i].ort,32,1,output);
fread(f_mitglieder[i].telefon,32,1,output);
fread(f_mitglieder[i].fax,32,1,output);
fread(f_mitglieder[i].gebtag,2,1,output);
fread(f_mitglieder[i].gebmonat,2,1,output);
fread(f_mitglieder[i].gebjahr,4,1,output);
fread(f_mitglieder[i].bemerk,64,1,output);
fread(f_mitglieder[i].rang,8,1,output);
// anz_mitgint++;
}
// }
// while(i == (und hier soll doch auch EOF hin oder ????) );
fclose(output); /* Wir geben File-Zeiger wieder frei */
return anz_mitg;
-
Ob das Dateiende erreicht wurde, kannst du mit einem Aufruf von feof() prüfen. Das funktioniert aber erst, wenn bereits einmal über das Dateiende hinweggelesen wurde.
Außerdem kannst du am Rückgabewert von fread erkennen, ob genau so viele Zeichen eingelesen wurden wie erwartet. Wenn nicht, stehen die Chancen gut, dass das Dateiende erreicht wurde...
-
Hi,
und wie genau muss das dann ausehen ????
Gruß Braintee
-
Danke habs gefunden.
Gruß Braintee
-
@braintee
Noch ein kleiner Tipp: Wenn deine Struktur genauso aufgebaut ist, wie die Datei, dann kannst du gleich die ganze Struktur einlesen, anstatt jedes Element einzeln.//Anstatt fread(f_mitglieder[i].mtgnr,8,1,output); fread(f_mitglieder[i].vorname,32,1,output); fread(f_mitglieder[i].nachname,32,1,output); fread(f_mitglieder[i].strasse,32,1,output); fread(f_mitglieder[i].plz,8,1,output); fread(f_mitglieder[i].ort,32,1,output); fread(f_mitglieder[i].telefon,32,1,output); fread(f_mitglieder[i].fax,32,1,output); fread(f_mitglieder[i].gebtag,2,1,output); fread(f_mitglieder[i].gebmonat,2,1,output); fread(f_mitglieder[i].gebjahr,4,1,output); fread(f_mitglieder[i].bemerk,64,1,output); fread(f_mitglieder[i].rang,8,1,output); //So fread(f_mitglieder+i, sizeof(*f_mitglieder), 1, output);