C - Fonction isint?

Résolu
Bonjour,

Je voudrais savoir quelle est la fonction a utiliser en C (et non en C++) pour eviter un defilement infini dans ma console lorsque je fais une erreur en entrant une lettre au lieu d'un nombre.

J'ai essaye isint mais ca ne fonctionne pas.

scanf("%d", &choix);
if(isint(choix)) printf("\n\n\n\t\t\t\t C'est bon.");


J'ai inclus les librairies :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


Je travaille avec :

$ gcc --version
gcc (GCC) 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)
Copyright (C) 2006 Free Software Foundation, Inc.


Merci
Configuration: Linux
Konqueror 3.5

5 réponses

  1. Modérateur
    essaie
    #include<stdio.h>
    
    int main ()
    {
      int choix, fini;
      fini = 0;
      choix = 0;
    
      while (fini == 0){
          printf ("Entre un entier : ");
          if (scanf ("%d", &choix)) {
              printf ("\n\n\n\t\t\t\t C'est bon.");
              fini = 1;
          }else {
              getchar ();
              printf ("\n\n\n\t\t\t\t Ce n'est pas bon. Recommencez.");
          }
      }
      return 0;
    }
    
    1. Contributeur
      Salut
      Ce que tu peux faire :

         int choix;
         if(scanf("%d",&choix)){
            printf("\n\n\n\t\t\t\t C'est bon.");
         }
      
      
      

      Cdt
      1. Modérateur
        Salut,

        tu peux faire comme ça
        #include<stdio.h>
        
        int main()
        {
                int choix;
                printf("Entre un entier : ");
                if (scanf("%d", &choix))
                         printf("\n\n\n\t\t\t\t C'est bon.");
                return 0;
        }
        
        1. Salut fiddy et le Perlien ;-)

          J'ai essaye votre script et ma console ne capote plus.

          J'ai modifie cependant votre script car je dois absolument signaler l'erreur a l'utilisateur mais ca ne fonctionne pas. La console se remet a capoter si j'entre un caractere, sinon c'est OK.

          Script modifie

          #include<stdio.h>

          int main()
          {
          int choix, fini;
          fini=0;

          while(fini==0)
          {
          choix = 0;
          printf("Entre un entier : ");
          if (scanf("%d", &choix))
          { printf("\n\n\n\t\t\t\t C'est bon.");
          fini=1;
          }
          else
          {
          printf("\n\n\n\t\t\t\t Ce n'est pas bon. Recommencez.");
          }
          }
          return 0;
          }


          Elle inscrit sans cesse :

          Ce n'est pas bon. Recommencez.Entre un entier :
          Ce n'est pas bon. Recommencez.Entre un entier :
          Ce n'est pas bon. Recommencez.Entre un entier :
          ....


          On dirait que le programme garde en memoire que choix = "caractere" malgre le fait que je reinitialise la variable choix au debut du while.

          Ou est le probleme?

          Merci
          1. Lami20j, ca marche ton truc.

            Je me rappelle avoir deja essaye le getchar() comme tampon dans le passe.

            Ouais, je suis pas mal rouille...

            Merci a vous deux.