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 :

strtoul avec nombre negatif


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 100
    Par défaut strtoul avec nombre negatif
    Bonjour

    Pour tester strtoul j'ai ecris le programme suivant

    Code C : 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
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <stdint.h> 
    #include <limits.h> 
    #include <errno.h> 
     
    int main (void) 
     
    { 
    char * p_end =NULL;
     
    errno = 0;
    uint32_t result = strtoul("-333",&p_end, 10);
     
    printf("strtoul return %u\n p_end = %s\n UMAX = %u\n", result, p_end, ULONG_MAX);
     
        perror("conversion"); 
    return 0 ; 
     
    }



    je m'attendais a recevoir un message d'erreur mais aucuen erreur n'est signalee par mon programme
    voici la sortie
    strtoul return 4294966963
    p_end =
    UMAX = 4294967295
    conversion: Success
    Comment detecter uen erreur si on passe a strtoul une chaine avec un nombre negatif ?

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Mokhtar BEN MESSAOUD Voir le message
    Comment detecter uen erreur si on passe a strtoul une chaine avec un nombre negatif ?
    Il n'y a pas d'erreur, car la valeur est convertie. Tu peux toujours tester la présence d'un caractère '-' dans la chaine avant d'appeler strtoul() ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (strchr(s, '-') != NULL)
    {
       n = strtoul(s, ...);
    }
    else
       error...

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Il n'y a pas d'erreur, car la valeur est convertie.
    D'ailleurs on peut constater que -333 (0xffff feb3) est parfaitement bien converti dans la bonne valeur "unsigned" correspondante, à savoir 4294966963
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 10
    Dernier message: 16/06/2010, 18h12
  2. Probleme dans un calcul avec un nombre negatif
    Par el_quincho dans le forum Access
    Réponses: 4
    Dernier message: 05/06/2006, 14h18
  3. round avec nombre de décimale spécifiée
    Par bilb0t dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 14/04/2005, 16h44
  4. Réponses: 1
    Dernier message: 11/10/2004, 10h47
  5. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32

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