Maison >développement back-end >C++ >Comment gérer une saisie de type de données incorrecte et éviter les boucles infinies en C ?

Comment gérer une saisie de type de données incorrecte et éviter les boucles infinies en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 17:46:11290parcourir

How to Handle Incorrect Data Type Input and Avoid Infinite Loops in C  ?

Gestion des entrées de type de données incorrectes en C

En C, une entrée de type de données incorrect peut conduire à des boucles infinies lorsque le programme ne parvient pas à traiter l'entrée du type attendu. Par exemple, si un entier est demandé mais qu'un caractère est saisi, le programme peut entrer dans une boucle de saisie sans fin.

Solution :

Le problème sous-jacent est le réglage de le "drapeau d'entrée incorrecte" dans std::cin lorsque l'entrée n'adhère pas au type attendu. Pour résoudre ce problème :

  1. Effacez l'indicateur d'entrée incorrecte : Utilisez std::cin.clear() pour réinitialiser l'indicateur, indiquant que l'entrée est désormais acceptable.
  2. Supprimer les mauvaises entrées : Utilisez std::cin.ignore() pour supprimer les entrées incorrectes de l'entrée buffer.

L'extrait de code suivant illustre cette solution :

while (std::cout > num)) {
    std::cin.clear(); // Clear bad input flag
    std::cin.ignore(std::numeric_limits<:streamsize>::max(), '\n'); // Discard input
    std::cout <p>Cette boucle de code continue jusqu'à ce qu'une entrée valide soit fournie.</p>
<p>Alternativement, on peut obtenir une entrée sous forme de chaîne et convertissez-la en entier à l'aide de std::stoi ou de méthodes similaires permettant la validation de la conversion.</p></:streamsize>

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