tester que tous les caracteres d'un chaine sont des chiffres
bonjour,
je cherche une methode simple pour faire ca.
exemple:
si on teste "124543" ca renvoie true
si on teste "12ef34e" ca renvoie false
je pensais tester les caracteres un par un, les convertir en chiffre, et verifier que le resultat est bien compris entre 0 et 9. mais si je converti une lettre en chiffre (fonction atoi()) j'obtiens 0, ca fausse ma methode.
auriez vous une meilleure idee ?
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par tatayoyo
si on teste "124543" ca renvoie true
si on teste "12ef34e" ca renvoie false
strtol()
sscanf()
http://emmanuel-delahaye.developpez....tes.htm#saisie
Fait de ton mieux et poste ton code si il ne fonctionne pas.
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par Emmanuel Delahaye
strtol()
sscanf()
Qu'est-ce que vous avez tous contre isdigit() ? Elle est ANSI-C, cette brave petite fonction, et le code devient evident:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
int all_digits(const char *s)
{
const char *p = s;
while(*p)
{
if(!isdigit(*p))
{
return 0;
}
p++;
}
return 1;
} |
Evidemment, la fonction ci-dessus suppose que la chaine de caracteres s est NULL-terminated.
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par DaZumba
Qu'est-ce que vous avez tous contre isdigit() ?
Rien du tout. Déjà citée. (Omission ne veut pas dire opposition)
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par Emmanuel Delahaye
Omission ne veut pas dire opposition
Joliment dit. C'est a croire que je deviens paranoiaque. Il va falloir que je corrige cela!
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par DaZumba
Joliment dit. C'est a croire que je deviens paranoiaque. Il va falloir que je corrige cela!
C'est juste qu'on est habitué à ce qu'Emmanuel donne toutes les solutions :D
Par contre, pour faire mon relou, il vaut mieux éviter plusieurs return dans une fonction même si dans ce cas précis, ça ne pause pas de problème.
Nas'
Re: tester que tous les caracteres d'un chaine sont des chif
Citation:
Envoyé par Nasky
Par contre, pour faire mon relou, il vaut mieux éviter plusieurs return dans une fonction même si dans ce cas précis, ça ne pause pas de problème.
Oui, on peut en effet respecter ce principe. Ca devient alors:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
int all_digits(const char *s)
{
int ret = 1;
const char *p = s;
while(*p)
{
if(!isdigit(*p))
{
ret = 0;
break;
}
p++;
}
return ret;
} |