Tester le type d'une variable....

Signaler
Messages postés
52
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
4 juin 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
bonjour...

je debute en C/C++
je demande a l'utiilisateur de saisir un entier via scanff et j'aimerais etre sur k'il saississe bien un entier...
existe t il une fonction me permettant de m'en assurer...

merci...
@+++

8 réponses

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Tu débutes, mais tu veux faire du C OU du C++ ?
parce que scanf c'est plutôt du C pas DU TOUT du C++

Ma participation à la saturation du net:
http://hylvenir.free.fr
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
saisie un chaine (avec gets) puis converti la en entier avec la fonction atoi
Messages postés
52
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
4 juin 2004

toutes mes excuse c en C
je voudrais verrouiller la saisie sur le type entier et mettre un msg d'erreur dans le cas de la saisie d'un caractere par exemple
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ca par exemple ?

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

main()
{

char s[50];
int n;

puts("entrez un entier :");

fflush(stdout);
gets(s);

if(!(n=atoi(s)) && *s!='0' ) puts("c'est pas un entier");
else
{
printf("vous avez saisie %d\n",n);
}
getchar();
return 0;
}
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Alors plutôt fgets (parce qu'il faut jamais utiliser gets )
ensuite un petit atoi ( avec un test du errno peut être je suis pas sûr de ça)

// Ma participation à la saturation du net:
// http://hylvenir.free.fr
Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
et si je tape -0 dans ton exemple ? :)

Ma participation à la saturation du net:
http://hylvenir.free.fr
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ok, c'est par habitude pour la rapidite, et pis le char[50] est securisant
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
"et si je tape -0 dans ton exemple ? "

bien vu

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

main()
{

char s[50];
int n;

puts("entrez un entier :");

fflush(stdout);
fgets(s,sizeof s,stdin);

if( (n=atoi(s)) || *s=='0' || ( *s=='-' && *(s+1)=='0' ) )
{
printf("vous avez saisie %d\n",n);
}
else
{
puts("c'est pas un entier");
}
return 0;
}