Problème avec isdigit

Résolu
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 - 29 sept. 2005 à 19:00
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 1 oct. 2005 à 14:46
Voila j'ai un petit problème je voudrai faire en sorte que lors d'une
insertion de nombre on recommence le code jusqu'à ce que le nombre soit
un nombre (autrement dit une vérification pour ne pas tapez des lettres
ou une lettre).

do

{

fflush(stdin);

printf("test entrer un nombre :);scanf("%d",&number);

}while(isdigit(number)!=0);



En français : jusqu'à ce que number soit un chiffre.



Mais voila cela ne fait aucun effet , et si l'on entre une lettre le
programme continue sont petit bonhomme de chemin. juste pour voir j'ai
changer en ==0 et la il trouve si j'ai introduit une lettre mais si
j'introduit un chiffre pas après , la boucle recommence quand mm
autrement dit pas moyen d'en sortir.



Quelq'un peut il m'aider svp?



merci d'avance

30 réponses

deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 sept. 2005 à 20:03
en faite elle marche mais sans les pointeurs ;)
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
29 sept. 2005 à 20:19
elle marche bien met kan j'entre 1, c un chiffre donc c accepte mais a
l'affichage c'est 49 autremendi la valeur est 49 et pas 1.
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
29 sept. 2005 à 23:37
c'est normal regarde :

1 c'est : 3 x 16 + 1 = 49

Le compte est bon!!!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 sept. 2005 à 15:05
looool oui et c'est aussi le code de 1 , mais j'entre 1 dans ma variable c'est pas pour que la valeur soit 49, mais bien 1 lol
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
30 sept. 2005 à 15:14
j'ai voulu résoudre le problème en faisant variable-='0' mais ca ne marche que jusque 9 :/
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
30 sept. 2005 à 21:15
Forcément.

Ca marchera pour un caractère, donc seulement pour un chiffre, pas pour un nombre.

Poste ton code, je corrigerai ce qui va pas.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
1 oct. 2005 à 09:41
Voici la boucle en question :



do

{

printf("Introduisez le numéro de l'employ%c :_",130);scanf("%s",&D_shnumemp);

fflush(stdin);

}while(test(D_shnumemp)==0); //ici il faudrai une
condition qui vérifie si D_shnumemp //est bien un chiffre OU un nombre,
aparement la fonction pour vérifier si c'est un chiffre //est ok, mais
il en faut une qui vérifie si la variable est bien un nombre.



Merci de m'aider savon
0
deck_bsd Messages postés 1243 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 3 août 2016 2
1 oct. 2005 à 09:44
ps: ds le code ci dessus la fonction test() est celle de joky écrite ici plus haut (premier post).
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
1 oct. 2005 à 14:41
commant tu as declaré D_shnumemp?

char *D_shnumemp??

Parcque si c'est comme ca que tu l'a déclaré, tu as p)as besoin de &.

Et si tu l'a déclaré en char tout court, ben tu pourras jamais lire une chaine de caractère.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
1 oct. 2005 à 14:46
ouais, je vais mettre la code.

<hr size="2" width="100%">char D_shnumemp[256]; //A priori, 256 caracères a lire, ca devrait etre suffisant.

//Si tu fais un char * comme dit plus haut, il ne faut pas que tu
oublies un malloc, donc il vaut peut etre mieux cette solution la!



do

{

printf("Introduisez le numéro de l'employe: ");

fflush(stdout); //Parcque si il y a pas de \n à la fin du printf, il ne l'affiche pas forcément

scanf("%s", D_shnumemp);

} while (test(D_shnumemp) == 0);

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
Rejoignez-nous