C - Fonction isint?

Résolu
artagon7 Messages postés 423 Statut Membre -  
artagon7 Messages postés 423 Statut Membre -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut
    Ce que tu peux faire :

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

    Cdt
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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;
    }
    
    0
  4. artagon7 Messages postés 423 Statut Membre 7
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. artagon7 Messages postés 423 Statut Membre 7
     
    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.
    0