Se connecter avec
S'enregistrer | Connectez-vous

Prob pour verifier une saisie en C

Dernière réponse : dans Programmation

salut, jai un tp en C et ja un souci.
Jai une saisie a verifier et ce doit etre obligatoirement numerique.
voila la demande de saisie(jai raccourci un peu jai mis que le necessaire)
  1. printf("RETARD(S): ");
  2. scanf("%c",&machin);//%c pour prendre que le 1er caractère saisi au cas ou il tape plus d'1 car.
  3. verifnum(machin);




et voila la fonction verifnum(). J'utilise la fonction pcq je fais d'autres verifications autre part et jve pas faire copier/coller
  1. void verifnum(char *machin)
  2. {
  3. int retard;
  4. retard=*machin;
  5. while(isdigit(retard)==0)//isdigit() verifie si le caractere tapé est un chiffre
  6. {
  7. flushall();
  8. printf("Erreur, saisissez un nombre:\n");
  9. scanf("%c",&retard);
  10.  
  11. }
  12. }


Quand je teste, jai cette erreur la:
http://img322.imageshack.us/my.php?image=erreur8hr.jpg

Comment resoudre svp ?

Merci d'avance

Autres pages sur : prob verifier saisie

Lassé par la pub ? Créez un compte
Expert Programmation

Lance en debug (touche F5), et quand tu aura "unhandled exception" regarde dans la pile de fonction où est-ce que ça plante.
Enlève le flushall() c'est surement lui qui supprime des pointeurs.

jai enlevé le flushall et ça fait toujours la meme erreur

jai 2 warning
'
  1. warning C4047: 'function' : 'char *' differs in levels of indirection from 'char '

pour quand jappele la fonction verifnum

et
  1. verifnum' : different types for formal and actual parameter 1

au meme moment

comment je peux, je comprends pas trop ?

jai enlevé le flushall et ça fait toujours la meme erreur

jai 2 warning
'
  1. warning C4047: 'function' : 'char *' differs in levels of indirection from 'char '

pour quand jappele la fonction verifnum

et
  1. verifnum' : different types for formal and actual parameter 1

au meme moment

comment je peux, je comprends pas trop ?
Expert Programmation

Ok, j'avais pas vu, ta fonction prend en paramètre un char * et tu lui donne un char (machin). Donc:
- soit en paramètre tu mets char tout court
- soit tu passes &machin et pas machin pour avoir le char*

En fait il prend la valeur du char convertit le contenu en pointeur et l'utilise, donc tu utilise un pointeur sur une zone mémoire protégée

Pour le 2eme warning, n'as-tu pas un prototype dans un .h qui n'est pas exactement comme ta fonction (du genre un qui déclare char tout court et l'autre char*)
Lassé par la pub ? Créez un compte
Tom's guide dans le monde