W jaki sposób wykryć koniec pliku?

Często operując na plikach zachodzi potrzeba wczytania całego zbioru w pętli. Wówczas bardzo często pojawia się kod podobny do poniższego.
while(!feof(file)) {
fread(..., file);
// ...
}
Niestety nie jest to prawidłowe rozwiązanie. Funkcja feof() nie sprawdza bowiem czy pozycja wewnątrz pliku znajduje się na końcu tylko czy ustawiona jest flaga EOF. Flaga ta ustawiana jest natomiast w momencie dojścia do końca pliku za pomocą innych funkcji operujących na zbiorach. Żeby zatem feof() zwróciło true wcześniej musi być wywołana np. funkcja fread(). Z tego względu znacznie lepszym rozwiązaniem jest użycie kodu jak poniżej:
while(true) {
fread(..., file);
if(feof(file)) break;
// ...
}
Aby dodawać komentarze musisz być zalogowany!
