Lecture à partir d'un fichier texte jusqu'à EOF : résolution de la duplication de la dernière ligne
Le code C fourni lit les entiers d'un fichier texte jusqu'à ce qu'il rencontre le indicateur de fin de fichier (EOF). Cependant, il imprime par erreur deux fois le dernier entier du fichier. Cela est dû à la façon dont l'indicateur EOF est géré dans la structure de boucle du programme.
Pendant l'exécution, le programme entre dans une boucle qui continue jusqu'à ce que l'indicateur EOF soit détecté. Au fur et à mesure que la boucle parcourt le fichier, elle récupère un entier "x" du fichier et l'imprime sur la console. Cependant, après la lecture du dernier entier du fichier, l'indicateur EOF est rencontré.
Le problème survient car la condition de boucle évalue EOF après avoir récupéré le dernier entier "x". Cela signifie que la boucle continue avec la même valeur de "x" qui a été chargée lors de l'itération précédente, l'imprimant effectivement deux fois.
Pour résoudre ce problème, la condition de boucle doit être modifiée pour vérifier l'indicateur EOF. avant d'essayer de récupérer un entier. Ceci peut être réalisé en utilisant une structure de boucle légèrement différente :
while (iFile) { int x; iFile >> x; if (iFile) { cerr << x << endl; } }
Dans cette boucle modifiée, l'objet "iFile" est utilisé comme condition de boucle, qui vérifie implicitement l'indicateur EOF. Si "iFile" est vrai (indiquant que le fichier n'est pas à EOF), le programme récupère et imprime un entier. Si "iFile" est faux (indiquant EOF), la boucle est quittée.
En implémentant cet ajustement, le programme lit les entiers du fichier texte jusqu'à ce qu'il atteigne EOF et imprime chaque entier une fois, résolvant le problème du la dernière ligne étant imprimée deux fois.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!