Control de saisi

Fermé
mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 - 15 mars 2010 à 23:17
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 mars 2010 à 20:05
Bonjour,



je veux faire un control de saisie en language c

voila un petit programe

#include<stdio.h>
void main()
{
int code;

printf("donner le code ");
scanf("%d",&d);

getch();
}

commet faire pour que les valeur saisie n'accepte que les chiffres et n'accepte pas plus de 7 chiffres

est ce que possible de faire un fonction de control de saisie et en main fait juste l'appel

merci d'avance
A voir également:

2 réponses

mb42 Messages postés 432 Date d'inscription vendredi 17 octobre 2008 Statut Membre Dernière intervention 14 janvier 2014 7
17 mars 2010 à 13:55
personne ne rencontre ce genre de probleme

j'ai une idee mais je n'arrive pas a realiser une fonction complete

je suppose qu'on dois convertir le code qui est "entier" en "chaine de caractere" et tester le saisie caractere par caractere

avec la fonction inverse de atoi qui est je pense stratoi

et apres le test reconvertir cette chaine de caractere en entier avec la fonction atoi


est ce que qu'elqu'un pouvez m'aidez meme me donnez juste une idee pour pouvoir continuer

merci d'avance
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 mars 2010 à 20:05
Bonjour,
Le type long en C est codé minimum sur 32 bits. Il est donc suffisant pour contenir tous les nombres de 7 chiffres maximum.
Concrètement, cela revient à tester que le nombre saisi est inférieur strictement à 10000000.
Je n'ai pas testé, mais cela devrait marcher :
#include <stdio.h>
int main(void) {
   int nb;
   do {
         int c;
         int ret;
         printf("nb : ");
         fflush(stdout);
         ret=scanf("%ld",&nb);
         while((c=getchar())!='\n' && c != EOF);
    } while(ret<1 || nb > 9999999 || nb < -9999999);
    printf("vous avez saisi %ld\n",nb);
    return 0;
}

Cdlt,
0