Tri des caractere entrer par l'utilisateur

yves_boris -  
KX Messages postés 19031 Statut Modérateur -
urgent

Bonjour,
j'ai ecrit un programme de calculatrice en c mais je n'arrive pas a trouver la fonction qui ne permet qu'a lutilisateur d'entrer uniquement des nombres, car une fois que je rentre un un caractere diff de 0 à 9 le programme se plante.pardonner aider moi c'est tres urgent

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    On ne peut pas contrôler l'utilisateur, si il veut entrer "bonjour" quand on lui demande un nombre, on ne peut pas l'en empêcher...
    Par contre, à toi de filtrer la chaîne de caractères en retour pour vérifier que c'est un nombre, et lui demander d'entrer à nouveau la chaîne si elle n'était pas bonne.

    Dans ton cas particulier où tu attends un entier, tu peux utiliser strtol :

    long int lireNombre(const char* texte)
    {
    	char nptr[BUFSIZ], *endptr;
    	long int res;
    
    	do
    	{
    		printf("%s",texte);
    		scanf("%s",nptr);
    		
    		res = strtol(nptr,&endptr,0);
    	}
    	while (endptr[0] != '\0');
    
    	return res;
    }
    
    int main()
    {
    	int i;
    	for (i=0; i<5; i++)
    	{
    		long int n = lireNombre("Entrez un nombre : ");
    		printf("Le nombre est : %ld\n\n",n);
    	}
    
    	return 0;
    }
    0