IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Amélioration de isdigit


Sujet :

C

  1. #1
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut Amélioration de isdigit
    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.
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Si il s'agit d'inverser le code de retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            * -> la chaine contient au moins un caractere non-numerique.*/
            return *s != '\0' && *s !='\n' ;
        }
        return 1;
    }
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut


    Bon ben voila... Encore un topic qui sert à rien... XD ... Merci pour ta réponse, ça marche...
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    On peut aussi faire:

    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
    int all_digits(char *s)
    {
        int ret = 0;
     
        if (s != NULL)
        {
            char *pend = NULL;
            strtol(s, &pend, 10);
            if (*pend == 0)
            {
                ret = 1;
            }
        }
     
        return ret;
    }
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutant][java2D]améliorer le design
    Par pingoui dans le forum 2D
    Réponses: 13
    Dernier message: 29/11/2004, 10h06
  2. [ Eclipse 3 vs 2.1.2] Quelles sont les améliorations ?
    Par geegee dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/05/2004, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo