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

  • Votes
  • Date
  • Date décroissante
  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. 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. 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.