Warum “while (!feof(Datei))" immer falsch???

Ich habe gesehen, Menschen, die versuchen, Dateien zu Lesen, wie dies in einer Menge posts in letzter Zeit.

Code

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    char * path = argc > 1 ? argv[1] : "input.txt";

    FILE * fp = fopen(path, "r");
    if( fp == NULL ) {
        perror(path);
        return EXIT_FAILURE;
    }

    while( !feof(fp) ) {  /* THIS IS WRONG */
        /* Read and process data from file… */
    }
    if( fclose(fp) == 0 ) {
        return EXIT_SUCCESS;
    } else {
        perror(path);
        return EXIT_FAILURE;
    }
}

Was ist falsch mit diesem while( !feof(fp)) Schleife?

Aufteilen Ihre Frage in der 2. Ein Teil, wie die Frage der richtigen und der andere Teil als Antwort; dann setzen, dass der 2. Teil da unten ... in den Antwort-Abschnitt SO 🙂
Warum ist es schlecht zu verwenden feof() zur Steuerung einer Schleife
Warum ist iostream::eof innerhalb einer Schleife die Bedingung als falsch?
Kurze Antwort: Es versucht, eine status-reporting-Funktion, um vorherzusagen, ob eine zukünftige operation erfolgreich sein wird.
Wie ist das, ich hatte nie ein problem mit?

InformationsquelleAutor William Pursell | 2011-03-25

Schreibe einen Kommentar