Jericho 0 Posté(e) le 30 avril 2006 Partager Posté(e) le 30 avril 2006 Bonjour, Pour un programme que je crée, je dois saisir le numéro de license d'un membre de karaté. Certaines choses me sont imposées telles que le type de ce numéro de license, il doit être en long integer ; de plus, il doit être composé de 6 chiffres (ex : 127001, 000001, ...). Je saisis ce nombre à l'aide d'un simple scanf("%ld", &numlicense); J'aimerais donc vérifier si le nombre saisi est bien composé de 6 chiffres, dans le cas contraire, afficher un message d'erreur. Je me demandais si c'était possible autrement qu'en saissant d'abord les chiffres un par un avec un getch dans des variables de type char pour ensuite convertir ces chiffres en un numéro de type long int ? J'ai fait quelques recherches dans Google et je n'ai rien trouvé... Merci d'avance pour vos réponses! Lien à poster
Dude76 19 Posté(e) le 30 avril 2006 Partager Posté(e) le 30 avril 2006 Tu fais saisir un petite chaîne de longueur 6 (gets par ex ou scanf("%6s", &sNumLicense) ), tu fais un bref test avec une regexp (ou autre type de comparaison à contruire par toi-même) , tu convertis ta chaîne en long, le tour est joué. Lien à poster
rjds 0 Posté(e) le 30 avril 2006 Partager Posté(e) le 30 avril 2006 char st_lic[7]; unsigned long int uint_lic; printf("License #: "); fgets(st_lic, 6, stdin); if(strlen(st_lic) != 6) { exit(1); } else { /* traitement */ uint_lic = atoi(st_lic); } Lien à poster
rjds 0 Posté(e) le 30 avril 2006 Partager Posté(e) le 30 avril 2006 pour verifier si le nombre fait 6 chiffres, un peu de math s'impose : avec la formule suivante tu auras le nombre de chiffre nb_chiffre = ceil(log10((double)uint_lic)); pour cela inclus remarque: le double n'est là que pour caster (changer le type de la variable) afin d'eviter des warning lors de la compilation et de s'assurer de la conversion. Lien à poster
Jericho 0 Posté(e) le 1 mai 2006 Auteur Partager Posté(e) le 1 mai 2006 Je vais essayer, merci beaucoup! :top Lien à poster
Messages recommandés