Dans divers exemples sur le web fgetc()
est utilisé comme ceci:fgetc(): Est-il suffisant de simplement vérifier EOF?
FILE *fp = fopen(PATH, "r");
if (fp == NULL) {
perror("main");
exit(EXIT_FAILURE);
}
int ch;
while (ch = fgetc(fp) != EOF) {
// do something
}
Mais selon la page de manuel à fgetc()
Si une erreur de lecture se produit, l'erreur indicateur pour le flux doit être défini, fgetc() doit renvoyer EOF, [CX] et doit définir errno pour indiquer l'erreur.
Alors, est-ce que je dois vérifier cela aussi? Et comment?
Vous avez besoin de parenthèses autour de l'affectation: 'while ((ch = fgetc (fp))! = EOF)', mais avec ce correctif en place, il suffit de vérifier EOF. Vous obtiendrez EOF en cas d'erreur ou d'EOF réel; Si vous le souhaitez, vous pouvez désambiguïser les deux cas après la boucle. –