C - Fonction isint?

Résolu/Fermé
artagon7 Messages postés 417 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 12 novembre 2024 - 25 nov. 2007 à 23:13
artagon7 Messages postés 417 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 12 novembre 2024 - 26 nov. 2007 à 01:05
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

5 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
26 nov. 2007 à 00:44
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
25 nov. 2007 à 23:18
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
25 nov. 2007 à 23:19
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
artagon7 Messages postés 417 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 12 novembre 2024 7
26 nov. 2007 à 00:24
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
artagon7 Messages postés 417 Date d'inscription dimanche 6 novembre 2005 Statut Membre Dernière intervention 12 novembre 2024 7
26 nov. 2007 à 01:05
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