[C] Question sur strtol (conversion de char* en int)

Question sur strtol (conversion de char* en int) [C] - C - Programmation

Marsh Posté le 19-02-2004 à 14:33:49    

Bonjour,
 
Je voudrais convertir une chaine de caractères représentant un entier. J'utilise donc la fonction strtol() qui renvoie la valeur correspondante si la conversion c'est bien passée, ou 0 sinon.
 
Ma question : Comment faire la différence entre :
- la valeur de retour 0 parce que la chaîne à convertir était "0"
et :
- la valeur de retour 0 parce qu'il y avait une erreur dans la chaine (par exemple "1a3" ) ?
 
Merci :)

Reply

Marsh Posté le 19-02-2004 à 14:33:49   

Reply

Marsh Posté le 19-02-2004 à 14:52:41    

en testant simplement s'il y a des caracteres != des caracteres numériques dans ta chaine AVANT conversion :)

Reply

Marsh Posté le 19-02-2004 à 15:44:26    

ixemul a écrit :

en testant simplement s'il y a des caracteres != des caracteres numériques dans ta chaine AVANT conversion :)


 
[:mlc]

Reply

Marsh Posté le 19-02-2004 à 16:04:27    

Je suis allé voir le man, voici la section sur le retour :
     Upon successful  completion,  strtol(),  strtoll(),  atol(),
     atoll(),  and  atoi() return the converted value, if any. If
     no conversion could be  performed,  strtol()  and  strtoll(
     return 0 and errno may be set to EINVAL.
 
si retour==0, regarde si errno==EINVAL

Reply

Marsh Posté le 19-02-2004 à 17:34:17    

et les autres paramètres, ils servent à quoi :o

Reply

Marsh Posté le 19-02-2004 à 18:18:44    

Bon en fait j'ai pas besoin de cette fonction :o
 
(je lis depuis un buffer, caractère par caractère, donc autant traiter les chiffres directement plutôt que de les stocker dans une chaine puis utiliser strtol() dessus).
 
M'enfin merci, ça me servira pour plus tard.
(je sais pas pourquoi, j'ai carrément zappé les autres params...)

Reply

Marsh Posté le 12-05-2005 à 14:43:44    

Salut MAX2048, tu te souviens de moi ????

Reply

Marsh Posté le 12-05-2005 à 16:25:23    

max2048 a écrit :

Bonjour,
 
Je voudrais convertir une chaine de caractères représentant un entier. J'utilise donc la fonction strtol() qui renvoie la valeur correspondante si la conversion c'est bien passée, ou 0 sinon.
 
Ma question : Comment faire la différence entre :
- la valeur de retour 0 parce que la chaîne à convertir était "0"
et :
- la valeur de retour 0 parce qu'il y avait une erreur dans la chaine (par exemple "1a3" ) ?
 
Merci :)


En utilisant le 2 ème paramètre.


char s[] ="1a3";
char *pend;
long x = strtol (s, &pend, 10);
 
if (pend != NULL && *pend == 0)
{
   /* OK */
}


Message édité par Emmanuel Delahaye le 12-05-2005 à 16:26:04

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed