Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
FILE *datei;
char zeile[1024];
int zeilenanzahl;
zeilenanzahl = 0;
datei = fopen("bla.txt", "r");
while(!feof(datei))
{
fgets(zeile, 1024, datei);
zeilenanzahl++;
}
fclose(datei);
printf("Die Datei hat %d Zeilen\n", zeilenanzahl);
Ja. Aber es liest maximal soviel Zeichen ein, wie in das Array passen. Also unter Umständen nicht eine komplette Zeile, wenn die Zeile zu lang ist.fgets liest ja nur eine Zeile ein.
Nein, nein, nein. Nicht mit feof. Das kann zu einer Endlosschleife führen und erzähle ich nun zum x-ten mal...und für eine Schleife kann man mit feof(filevariable) prüfen, ob das Dateiende erreich wurde
while (fgets(zeile, sizeof zeile, datei) != NULL) {
if (zeile[0] != '\0' && zeile[strlen(zeile+1)] == '\n') zeilenanzahl++;
}
Ja. Aber es liest maximal soviel Zeichen ein, wie in das Array passen. Also unter Umständen nicht eine komplette Zeile, wenn die Zeile zu lang ist.
int File::readline(FILE *file, char *buffer, int maxlen)
{
int i;
if(maxlen < 1)
return -1;
if(NULL == fgets(buffer, maxlen, file))
{
*buffer = '\0';
return 1;
}
i = strlen(buffer) - 1;
if(i >= 0 && buffer[i] == '\n')
buffer[i] = '\0';
else
{
while(fgetc(file) != '\n');
}
return 0;
}
Ob etwas überflüssig ist oder nicht, möchte ich doch selbst entscheiden..Ganze Zeile, überflüssigen Rest überspringen
Nö. Du hast da auch eine Endlosschleife wenn fgetc EOF liefert.(Die Funktion hast du schon öfter gesehen,
also denk ich sie funktioniert unter jeden Bedingungen.
FILE* f = fopen("bla.txt","r");
if(f == NULL) return -1;
char temp[512];
while(fgets(temp,512,f) != NULL) printf(temp);
fclose(f);
for(i = 0; i < NUMBER;i++) {
fgets(line[i],LENGTH,file);
feld[i] = line[i];
}