faire la difference entre un entier et le reste
Dernière réponse : dans Programmation
Bonjour,
j'ai un petit probleme (tres gros en fait),
voilà un exemple d'éxécution de mon programme :
> calculer factorielle 3 4 fibonacci 1 2 3 4
6
24
1
1
2
3
argv[0] = calculer
argv[1] = factorielle
argv[2] = 3
... etc
j'aimerai savoir si argv[2] est un entier ou pas exemple :
> calculer factorielle abc12/;,.
a ce moment là argv[2] n'est pas un entier
C'est en langage C
merci d'avance
j'ai un petit probleme (tres gros en fait),
voilà un exemple d'éxécution de mon programme :
> calculer factorielle 3 4 fibonacci 1 2 3 4
6
24
1
1
2
3
argv[0] = calculer
argv[1] = factorielle
argv[2] = 3
... etc
j'aimerai savoir si argv[2] est un entier ou pas exemple :
> calculer factorielle abc12/;,.
a ce moment là argv[2] n'est pas un entier
C'est en langage C
merci d'avance
Autres pages sur : difference entier reste
Lassé par la pub ? Créez un compte
en quel language est fait ton algo ? Je vais peut etre dire une connerie, mais aurais tu une fonction similaire à is_int de php?
http://fr2.php.net/manual/fr/function.is-int.php
Cela pourra sans doute t'aider a trouvé l'équivalent dans le language que tu cherche.
http://fr2.php.net/manual/fr/function.is-int.php
Cela pourra sans doute t'aider a trouvé l'équivalent dans le language que tu cherche.
C'est bien un petit programme et loin d'être gros ;-)
argv est toujours un pointeur sur une chaine de caractère.
Donc il te faut convertir ta chaine de caractère "3" en valeur numérique. Tu as la fonction atoi() pour faire ça.
Tu peux aussi créer une macro, sachant que "0" = 0x30
donc tu fais caractere - 0x30 et tu as la valeur unitaire.
par exemple si argv[3] = "124"
la valeur serait:
Pour savoir si un caractère est un nombre il suffit de tester si caractere >= 0x30 et caractere <= 0x39
tu peux utiliser des macros pour faciliter tout ça:
argv est toujours un pointeur sur une chaine de caractère.
Donc il te faut convertir ta chaine de caractère "3" en valeur numérique. Tu as la fonction atoi() pour faire ça.
Tu peux aussi créer une macro, sachant que "0" = 0x30
donc tu fais caractere - 0x30 et tu as la valeur unitaire.
par exemple si argv[3] = "124"
la valeur serait:
val = (argv[3][0] - 0x30) * 100 + (argv[3][1] - 0x30) * 10 + argv[3][2] - 0x30
Pour savoir si un caractère est un nombre il suffit de tester si caractere >= 0x30 et caractere <= 0x39
tu peux utiliser des macros pour faciliter tout ça:
#define IS_CHAR_DIGIT(A) (A >= 0x30 && A <= 0x39)
#define GET_CHAR_VAL(A) (A - 0x30)
Citation :
ataofeal a écrit :
une exception en C ...
bref, la meilleur façon, à mon humble avis est celle décrite pas Cricky. Cependant j'utiliserai plutôt la fonction isdigit plutôt que la macro.
Ben les exceptions sont les crash ou les assert ;-)
Par contre, on ne peut effectivement pas les "catcher" en C.
Pour isdigit(), exact, il ne faut pas réinventer la roue (je ne savais pas qu'elle existait cette fonction en C :-D ).
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :