Conversion char* to unsigned int
S.A.
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un petit problème lors de la conversion avec la fonction strtoul elle ne marche pas chez moi . Ce que j'essai de faire est :
char * endptr;
unsigned long int valeur;
valeur=strtoul("36",&endptr,2);
ça me fait un warning : ISO C90 forbids mixed declarations and code
Et quand j'essaie d'afficher ma valeur avec printf("%lu",valeur); ça m'affiche un 0 !
Est ce que quelqu'un pourrait m'expliquer d'où vient le problème ou bien s'il y a une autre méthode pour convertir une chaine de caractère en unsi int .
Merci d'avance ,
Cordialement.
J'ai un petit problème lors de la conversion avec la fonction strtoul elle ne marche pas chez moi . Ce que j'essai de faire est :
char * endptr;
unsigned long int valeur;
valeur=strtoul("36",&endptr,2);
ça me fait un warning : ISO C90 forbids mixed declarations and code
Et quand j'essaie d'afficher ma valeur avec printf("%lu",valeur); ça m'affiche un 0 !
Est ce que quelqu'un pourrait m'expliquer d'où vient le problème ou bien s'il y a une autre méthode pour convertir une chaine de caractère en unsi int .
Merci d'avance ,
Cordialement.
A voir également:
- Conversion char* to unsigned int
- Qwerty to azerty - Guide
- Crdownload to mp4 - Forum Téléchargement
- Reboot to bootloader - Guide
- Video to video - Télécharger - Conversion & Codecs
- Monitor going to sleep - Forum Windows
4 réponses
Bonjour
Sauf erreur..
c'est bien &endptr (car c'est un char **) par contre le paramètre suivant ne peut pas être 2 car c'est la base et ton nombre contient autre chose que des 0 et de 1. Tu devrais mettre 10
Sauf erreur..
c'est bien &endptr (car c'est un char **) par contre le paramètre suivant ne peut pas être 2 car c'est la base et ton nombre contient autre chose que des 0 et de 1. Tu devrais mettre 10
S.A.
Merci beaucoup ça marche , je n'y ai pas du tout portait attention à la base :D
valeur=strtoul("36",endptr,2);
devrait fonctionner.
devrait fonctionner.
merci de votre réponse mais malheureusement ça marche pas, ça m'ajoute le warning: passing argument 2 of `strtoul' from incompatible pointer type
/usr/include/stdlib.h:188: note: expected `char ** __restrict__' but argument is of type `char *'
Et quand je change le type de char * endptr en char ** endptr ça me garde toujours mon warning de ISO et ça m'affiche 0
/usr/include/stdlib.h:188: note: expected `char ** __restrict__' but argument is of type `char *'
Et quand je change le type de char * endptr en char ** endptr ça me garde toujours mon warning de ISO et ça m'affiche 0
Oui c'est ce que j'ai trouvé sur le man ,
strtoul() stocke l'adresse du premier caractère invalide dans *endptr. S'il n'y avait aucun chiffre valide, strtoul() stocke la valeur originale de la chaine de caractère dans *endptr. (Donc, si *nptr n'est pas '\0' et si **endptr vaut '\0' en retour, la chaîne entière est valide.)
strtoul() stocke l'adresse du premier caractère invalide dans *endptr. S'il n'y avait aucun chiffre valide, strtoul() stocke la valeur originale de la chaine de caractère dans *endptr. (Donc, si *nptr n'est pas '\0' et si **endptr vaut '\0' en retour, la chaîne entière est valide.)