Bonjour à tous

J'ai chercher à créer une fonction plus complète ressemblant à isdigit, mais perméttant de vérifier une chaine complète.

Grace à l'aide de plusieurs d'entre vous, voici le résultat : (obtenu il y a quelques semaines)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
int all_digits(char *s)
{
 /* verification qu'on ne va pas deferencer un pointeur nul  */
    if (s != NULL)
    {
        /*tant que le caractere a la position *s n'est pas '\0'
         *(fin de chaine) et que isdigit() renvoit
         * une valeur non-nulle, on passe au caractere suivant. */
        while(*s && isdigit(*s))
        {
            /* Incrementation du s */
            s++;
        }
 
        /* Le '\0' terminal ou le '\n' a ete atteint,
         * donc isdigit() n'a jamais renvoye 0
         * -> la chaine n'est composee que de caracteres numeriques.
         *
         * isdigit() a renvoye 0.
         * On n'a pas atteint le '\0' terminal, ni le '\n'.
         * -> la chaine contient au moins un caractere non-numerique.*/
        return *s == '\0' || *s =='\n' ;
    }
    return 0;
}
Jusqu'ici tout va pour le mieux... Mais voila, il s'avère que cette fonction me retourne un 1 quand tout va bien... Et je préfererai qu'elle me renvoi un 0 tout beau tout rond... ça me perméttrait de mieu m'y retrouver dans mon code général...

J'espère que vous pourrez m'aider au plus vite...

Cordialement et avec tous mes remerciements.