Maison >développement back-end >C++ >Comment puis-je valider efficacement la saisie d'entiers de l'utilisateur en C ?

Comment puis-je valider efficacement la saisie d'entiers de l'utilisateur en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 21:41:13461parcourir

How Can I Effectively Validate Integer Input from the User in C  ?

Vérification de la validité des entiers des entrées utilisateur

Lorsque vous travaillez avec des entrées utilisateur, il est essentiel de s'assurer que les données saisies correspondent au format attendu. Dans les cas où des valeurs entières sont requises, vous pouvez rencontrer des scénarios dans lesquels les utilisateurs saisissent par inadvertance des caractères non numériques.

Cet article fournit une solution pour résoudre ce problème en vérifiant si l'entrée du flux d'entrée standard cin est un nombre entier. ou non. Voici une description détaillée de l'implémentation :

int x;
cin >> x;

if (cin.fail()) {
    // Not an int.
}

La fonction cin.fail() vérifie l'état du flux d'entrée. Si l'opération d'entrée n'a pas réussi (par exemple, en raison d'une entrée non valide), la fonction renvoie vrai et définit l'indicateur failbit. Sinon, il renvoie faux.

Cette approche vous permet de déterminer si l'entrée est un entier ou non. Si ce n'est pas le cas, vous pouvez prendre les mesures appropriées, par exemple demander à l'utilisateur de saisir à nouveau un entier valide.

Pour les scénarios dans lesquels le flux d'entrée contient des caractères non entiers suivis d'entiers, vous pouvez utiliser la boucle suivante :

int x;
while (cin.fail()) {
    cin.clear();
    cin.ignore(256, '\n');
    cin >> x;
}

La fonction cin.clear() efface l'indicateur failbit, tandis que cin.ignore(256, 'n') ignore l'entrée restante caractères jusqu'au premier caractère de nouvelle ligne ou 256 caractères, selon la première éventualité.

Alternativement, si l'utilisateur peut saisir une chaîne non entière, vous pouvez lire l'entrée sous forme de chaîne, vérifier si elle ne contient que des nombres, et convertissez-le en un entier. Cependant, cette approche peut ne pas convenir aux cas où des nombres à virgule flottante sont attendus.

En résumé, l'extrait de code fourni vous permet de vérifier si l'entrée du flux d'entrée standard est un entier. Sinon, vous pouvez gérer la situation en conséquence, en vous assurant que seules les valeurs entières valides sont acceptées dans votre programme.

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