Probleme

Signaler
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Bonjour!

J'ai un probleme, j'ai créé un logiciel en c++ qui souvre dans la console .... Il y a un menu qui s'affiche avec plusieurs propositions
exemple: 
               taper 1 pour creer un nom
               taper 2 pour supprimer un nom
               taper 3 .......

Donc l'utilisateur rentre son choix 1, 2, 3, ...
Jusqu'a la tout va bien, mais si l'utilisateur se trompe et qu'il tape une lettre au lieu d'un chiffre ba il se créé une boucle infini donc ce que je veux c'est trés simple je voudrai avoir les lignes de code pour faire ça :

Si ( Le choix n'est pas un chiffre) alors
afficher : (votre saisi est incorect)
fin si

Merci d'avance en espérant avoir se que je veu svp

2 réponses

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Salut,

Ne récupère pas un entier (%d dans un scanf), mais une chaîne (%s dans un scanf).
Après, tu peux la comparer avec strcmp avec "1", "2"...

C'est chiant en C car le switch ne fonctionne pas sur les chaînes.

Sinon, tu peux convertir la chaîne en entier avec atoi, mais cette fonction à tendance à convertir tout et n'importe quoi en entier.

Tu peux vérifier que la chaîne n'est composée que de chiffres en testant le code ascii de chaque lettre. (code compris entre 48 et 57).
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
atoi() est d'une parfaite logique:
0 + ce qu'elle trouve, rien de plus.

ar1du62 > http://www.cppfrance.com
pour questions C/C++, ici c'est "Le Bar".

Je redirige.

ciao...
BruNews, MVP VC++