Maison > développement back-end > C++ > Comment empêcher les lectures de dernière ligne dupliquées lors de l'atteinte d'EOF dans une boucle de fichier C ?

Comment empêcher les lectures de dernière ligne dupliquées lors de l'atteinte d'EOF dans une boucle de fichier C ?

Linda Hamilton
Libérer: 2024-12-27 13:01:14
original
575 Les gens l'ont consulté

How to Prevent Duplicated Last Line Reads When Reaching EOF in a C   File Loop?

Correction de la lecture de la dernière ligne dupliquée dans la boucle EOF

Le problème d'origine survient lors de la lecture d'un fichier texte jusqu'à la fin du fichier (EOF ) est atteint. Le code C fourni récupère à plusieurs reprises la dernière ligne deux fois en raison du traitement retardé de l'indication EOF.

Pour rectifier cela, suivez la chaîne d'événements :

  1. Récupérez le premier entier, 10.
  2. Passez à 20.
  3. Lisez 30 et continuez avec EOF vérification.
  4. Comme EOF n'a pas été atteint, la boucle continue. La valeur précédente, 30, est toujours stockée dans x.
  5. EOF est détecté, ce qui oblige x à conserver la valeur 30 et à définir l'indicateur ios::eofbit.
  6. La valeur de x est généré comme 30, correspondant à l'itération précédente.
  7. La condition de boucle est maintenant évaluée, et depuis que EOF a été rencontré, la boucle quitte.

Pour résoudre ce problème, les modifications suivantes peuvent être apportées au code :

while (true) {
    int x;
    iFile >> x;
    if (iFile.eof()) break;
    cerr << x << endl;
}
Copier après la connexion

Dans ce code révisé, la boucle continue jusqu'à ce que la fin du fichier soit atteinte , garantissant que la dernière ligne n'est lue qu'une seule fois. Il gère également le cas d'un fichier vide avec élégance.

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