Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°648573
max2048
Begin The Begin
Posté le 19-02-2004 à 14:33:49  profilanswer
 

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 :)

mood
Publicité
Posté le 19-02-2004 à 14:33:49  profilanswer
 

n°648592
ixemul
Nan mais sans blague ! ⚡
Posté le 19-02-2004 à 14:52:41  profilanswer
 

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

n°648681
max2048
Begin The Begin
Posté le 19-02-2004 à 15:44:26  profilanswer
 

ixemul a écrit :

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


 
[:mlc]

n°648703
nico168
Posté le 19-02-2004 à 16:04:27  profilanswer
 

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

n°648835
Taz
bisounours-codeur
Posté le 19-02-2004 à 17:34:17  profilanswer
 

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

n°648866
max2048
Begin The Begin
Posté le 19-02-2004 à 18:18:44  profilanswer
 

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...)

n°1080844
joey_joe
Posté le 12-05-2005 à 14:43:44  profilanswer
 

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

n°1081064
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-05-2005 à 16:25:23  profilanswer
 

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/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

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

 

Sujets relatifs
[Visual C++] Question (basique) sur les CPenQuestion Parsage avec SAX ...
[lisp] petite question sur implodechConversion planètaire -> planaire
conversion dateConversion coordonnees isometriques vers coordonnees classiques?
[VC++.Net]Conversion de chaine de caractère[Question] Ca vaut encore le coup d'apprendre le JS de nos jours ?
problème conversion Chaine->hexa[Vba] question sur la methode add dans la collection workbook
Plus de sujets relatifs à : [C] Question sur strtol (conversion de char* en int)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR