J'ai essayé avec VS2017 (version 32 bits) sur un PC Windows 64 bits et il me semble que fscanf() met le drapeau eof immédiatement après avoir réussi à lire le dernier élément dans un fichier. Cette boucle se termine immédiatement après que fscanf() a lu le dernier élément dans le fichier lié au flux :
while(!feof(stream))
{
fscanf(stream,"%s",buffer);
printf("%s",buffer);
}
Je sais que c'est un code peu sûr... Je veux juste comprendre le comportement. Veuillez me pardonner ;-)
Ici, stream est lié à un fichier texte ordinaire contenant des chaînes de caractères comme "Hello World !". Le dernier caractère de ce fichier est no un caractère de nouvelle ligne.
Cependant, fgetc(), ayant traité le dernier caractère, essaie d'en lire un autre dans cette boucle, ce qui conduit à c=0xff (EOF) :
while (!feof(stream))
{
c = fgetc(stream);
printf("%c", c);
}
Ce comportement de fscanf() et fgetc() est-il standardisé, dépendant de l'implémentation ou autre chose ? Je ne demande pas pourquoi la boucle se termine ou pourquoi elle ne se termine pas. Je suis intéressé par la question de savoir si c'est un comportement standard. .