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
Linda Hamiltonoriginal
2024-12-27 13:01:14540parcourir

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;
}

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!

Déclaration:
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