Maison > développement back-end > C++ > Comment éviter les boucles infinies lors de la gestion d'une entrée de type de données erronée en C ?

Comment éviter les boucles infinies lors de la gestion d'une entrée de type de données erronée en C ?

Susan Sarandon
Libérer: 2024-12-12 15:18:10
original
479 Les gens l'ont consulté

How to Prevent Infinite Loops When Handling Erroneous Data Type Input in C  ?

Comment gérer les entrées de type de données erronées

En C, traiter les entrées non valides est crucial pour maintenir l'intégrité du programme. Par exemple, lors d'une demande d'un entier et d'une saisie de caractère, le programme doit gérer l'erreur avec élégance et solliciter à nouveau la saisie correcte. Cependant, rencontrer une entrée d'un type inattendu peut conduire à des boucles infinies.

Raison de la boucle infinie

La boucle infinie se produit parce que l'indicateur « mauvaise entrée » du flux d'entrée est défini lorsque l’entrée attendue n’est pas reçue. L'indicateur d'entrée incorrecte doit être effacé manuellement et l'entrée incorrecte supprimée du tampon de flux.

Solution utilisant la validation d'entrée

Pour éviter la boucle infinie, utilisez ce qui suit approche :

// Loop if input fails (e.g., no characters were read)
while (std::cout << "Enter a number" && !(std::cin >> num)) {
    std::cin.clear(); // Clear the bad input flag
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard the input
    std::cout << "Invalid input; please re-enter.\n";
}
Copier après la connexion

Approche de saisie alternative

Au lieu d'utiliser validation d'entrée, vous pouvez obtenir l'entrée sous forme de chaîne, puis essayer de la convertir en entier en utilisant std::stoi ou une méthode similaire qui fournit des vérifications de l'état de conversion.

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