Maison > développement back-end > C++ > Pourquoi mon code C imprime-t-il deux fois la dernière ligne d'un fichier texte lors de la lecture jusqu'à EOF ?

Pourquoi mon code C imprime-t-il deux fois la dernière ligne d'un fichier texte lors de la lecture jusqu'à EOF ?

Barbara Streisand
Libérer: 2024-12-30 04:16:09
original
993 Les gens l'ont consulté

Why Does My C   Code Print the Last Line of a Text File Twice When Reading Until EOF?

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;
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal