[scanf] probleme de programme qui boucle
dr4g0n
-
Sims' -
Sims' -
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" );
}
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" );
}
A voir également:
- [scanf] probleme de programme qui boucle
- Programme demarrage windows - Guide
- Programme word gratuit - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
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.
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.
petit complément, tu peux utiliser les expressions régulières pour déterminer si c'est du texte ou un chiffre...
En java, tu vas pouvoir faire qqch du genre :
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...
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...