[scanf] probleme de programme qui boucle

Fermé
dr4g0n - 22 janv. 2008 à 09:35
 Sims' - 22 janv. 2008 à 11:28
Bonjour a tous.
Voila j'ai un petit souci
je demande un numéro a l'utilisateur compris entre 1 et 1000
je test la valeur entrée et je lui répond
Seul problème lorsque l'on rentre une lettre au lieu d'un chiffre mon programme boucle et plante ... il ne redemande plus la valeur et boucle
une idée pour eviter cela ?
Pour complément je suis sous un cygwin et je compile avec gcc.
ci dessous mon code



Code :

#include <stdio.h>
#include <signal.h>
int i;
int nbuser;

verifentree(nbuser,petit,grand){

if ( nbuser < 1 || nbuser > 1000){
printf(" votre nombre n'est pas dans la fourcette \n" );
//comptcoup();
i = 0;
return i, nbuser;
}

else {
printf("votre nb est bien dans la fourchette attendu \n il va etre envoyé au serveur \n" );
//comptcoup();
i = 1;
return i;
}
}

main() {
//int nbuser;
do{
printf(" PERE >> Entrez votre nombre entre 1 et 1000 \n" );
scanf("%d", &nbuser);
printf(" vous avez saisie la valeur %d \n", nbuser);
verifentree(nbuser);
//printf(" coup = %i",coup);
}
while (i != 1);
printf("PERE >> ok \n" );
}

4 réponses

Hello,

tout simplement lorsque l'utilisateur saisie une donnée, tu la teste, si c'est un chiffre tu continue ton traitement, si non, tu boucle tant que l'utilisateur n'a pas entrée un chiffre...

pour tester si c'est un chiffre ou du texte, tu peux utiliser les patterns.
0
petit complément, tu peux utiliser les expressions régulières pour déterminer si c'est du texte ou un chiffre...
0
merci sims' pour ta réponse
Etant néophyte complet peux tu dévelloper ?
0
En java, tu vas pouvoir faire qqch du genre :

   Pattern p = Pattern.compile("[a-zA-Z]+");
   String entree = "choix tu du user";
   Matcher m = p.matcher(entree);
   while(m.find())
  {
      System.out.println("veuillez ressaisir un chiffre.");
   }


pour plus d'info cherche expression régulière.

En fait, se sont une chaîne de caractère qui va te permettre par la suite d'en valider une autre. Par exemple, on va l'utiliser pour valider un e-mail ou un numéro avs, pour etre sur qu'on ait bien la structure bonjour@google.com ou 123.12.123.123...
0