Maison >développement back-end >C++ >Comment gérer une saisie de type de données incorrecte et éviter les boucles infinies en 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 :
L'extrait de code suivant illustre cette solution :
while (std::cout << "Enter a number" && !(std::cin >> num)) { std::cin.clear(); // Clear bad input flag std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Discard input std::cout << "Invalid input; please re-enter.\n"; }
Cette boucle de code continue jusqu'à ce qu'une entrée valide soit fournie.
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.
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!