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

  FORUM HardWare.fr
  Programmation
  C

  transformer un char* en int

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transformer un char* en int

n°758193
mirascheat
Posté le 09-06-2004 à 16:56:28  profilanswer
 

Bonjour,
Je récupère un char* grâce à la fonction strtok (qui est en fait un entier).
Puis après je veux le comparer à un entier.
Pour forcer le char* en int j'ai fait lors de ma comparaison :
if(a == (int)b)
mais ca ne semble pas marcher.
Quelqu'un pour m'aider.
Merci :-)

mood
Publicité
Posté le 09-06-2004 à 16:56:28  profilanswer
 

n°758202
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-06-2004 à 16:58:48  profilanswer
 

ouh putain, que Taz ne passe pas par ici [:psywalk]


---------------
J'ai un string dans l'array (Paris Hilton)
n°758206
mirascheat
Posté le 09-06-2004 à 17:00:43  profilanswer
 

et sinon à part me faire démonter la gueule par Taz personne pour m'aider ;)
comme ca après je peux auto-censurer mon post :-)

n°758209
Moktar1er
No one replies...
Posté le 09-06-2004 à 17:01:28  profilanswer
 

ça ne t'est jamais venu à l'esprit d'utiliser sscanf :??:

n°758216
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-06-2004 à 17:03:39  profilanswer
 

t'as la fonction strtol() pour transformer une chaine en integer


---------------
J'ai un string dans l'array (Paris Hilton)
n°758218
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-06-2004 à 17:04:08  profilanswer
 

moktar1er a écrit :

ça ne t'est jamais venu à l'esprit d'utiliser sscanf :??:

oui, aussi !


---------------
J'ai un string dans l'array (Paris Hilton)
n°758228
yawen
Posté le 09-06-2004 à 17:07:48  profilanswer
 

hem, tu essaye donc de convertire un char* en int... ben au mieux tu va te retrouver avec l'adresse du premier caractère de ta chaine de caractères, convertie en entier. donc en gros, pas du tout ce que tu veux. la fonction qui irais bien serais "int atoi(char *)", si je me souviens bien... tu lui donne le pointeur sur le premier caractère de ta chaine (donc ta variable int* b), et il lis un entier dedans, et te le renvois en int. je pense que c plus rapide que sscanf, qui soit dis en passant, marche très bien aussi :

Code :
  1. int a;
  2. char b[]="10";
  3. sscanf(b,"%d",&a);

n°758230
yawen
Posté le 09-06-2004 à 17:08:23  profilanswer
 

Harkonnen a écrit :

t'as la fonction strtol() pour transformer une chaine en integer


ah oui, aussi

n°758277
mirascheat
Posté le 09-06-2004 à 17:37:44  profilanswer
 

merci atoi marche très bien

n°758335
Taz
bisounours-codeur
Posté le 09-06-2004 à 18:57:39  profilanswer
 

mirascheat a écrit :

merci atoi marche très bien

ah ouais ? et comment tu fais pour gérer une erreur éventuelle ? genre atoi("Taz" )

mood
Publicité
Posté le 09-06-2004 à 18:57:39  profilanswer
 

n°758358
minusplus
Posté le 09-06-2004 à 19:23:20  profilanswer
 

Taz a écrit :

ah ouais ? et comment tu fais pour gérer une erreur éventuelle ? genre atoi("Taz" )

I trust the end-user ! :sol:

n°758360
Taz
bisounours-codeur
Posté le 09-06-2004 à 19:26:16  profilanswer
 

le problème avec atoi, c'est le code d'erreur est 0 qui est aussi un int valide
 
bref atoi(chaine) == 0, c'est impossible de savoir a priori si chaine vaut 0 ou s'il y a une erreur -> strto* / sscanf

n°758361
chimere
Ce soir c est bonsoir .
Posté le 09-06-2004 à 19:31:57  profilanswer
 

mirascheat a écrit :

Bonjour,
Je récupère un char* grâce à la fonction strtok (qui est en fait un entier).
Puis après je veux le comparer à un entier.
Pour forcer le char* en int j'ai fait lors de ma comparaison :
if(a == (int)b)
mais ca ne semble pas marcher.
Quelqu'un pour m'aider.
Merci :-)


 
omg !  [:tortue geniale]

n°758362
cricri_
Posté le 09-06-2004 à 19:32:53  profilanswer
 

vais peut-être dire un bêtise, mais scanf() prends les données sur le flux d'entrée, non ? on peut changer ça ?

n°758366
Vinx
Posté le 09-06-2004 à 19:39:10  profilanswer
 

Cricri_ a écrit :

vais peut-être dire un bêtise, mais scanf() prends les données sur le flux d'entrée, non ? on peut changer ça ?


 
Utilise sscanf (Avec 2 s) ;)
Tu as aussi fscanf avec un fichier en entrée


Message édité par Vinx le 09-06-2004 à 19:51:33
n°758367
cricri_
Posté le 09-06-2004 à 19:40:40  profilanswer
 

Arff ... autant pour moi, merci Vinx ;)

n°758681
matafan
Posté le 10-06-2004 à 02:14:14  profilanswer
 

Je dis ça juste comme ça mais la question doit bien etre posée à peu près 2 fois par semaine...

n°810267
yawen
Posté le 29-07-2004 à 17:43:56  profilanswer
 

tant qu'on se lasse pas de répondre 2 fois par semaine, tout va bien :)

n°810274
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-07-2004 à 17:46:17  profilanswer
 

Taz a écrit :

le problème avec atoi, c'est le code d'erreur est 0 qui est aussi un int valide
 
bref atoi(chaine) == 0, c'est impossible de savoir a priori si chaine vaut 0 ou s'il y a une erreur -> strto* / sscanf


 
strcmp(chaine, "0" )
 
 
[:neowen]

n°810341
Ace17
Posté le 29-07-2004 à 18:28:23  profilanswer
 

antp a écrit :

strcmp(chaine, "0" )
[:neowen]


Et si j'entre "00"?

n°810343
antp
Super Administrateur
Champion des excuses bidons
Posté le 29-07-2004 à 18:32:15  profilanswer
 

Ace17 a écrit :

Et si j'entre "00"?


 
C'était pour rire hein :o

n°810346
Kyle_Katar​n
Posté le 29-07-2004 à 18:36:59  profilanswer
 

Ace17 a écrit :

Et si j'entre "00"?


 
ben strcmp(chaine, "00" ) !

n°810349
Ace17
Posté le 29-07-2004 à 18:44:28  profilanswer
 

Kyle_Katarn a écrit :

ben strcmp(chaine, "00" ) !


 :lol:  
Alors je vais entrer "000"  :p

n°810358
Kyle_Katar​n
Posté le 29-07-2004 à 18:53:34  profilanswer
 

Mouais effectivement dans le cas de "000" on est bien embetté...
 
Ou pourrait faire une boucle pour tester des concaténations de 0 jusqu'à strlen(chaine) ! Qu'en penses tu Taz ?

n°810362
chrisbk
-
Posté le 29-07-2004 à 18:57:26  profilanswer
 

bande de niais :o

Code :
  1. int atoi2(char *prout)
  2. {
  3. int res = atoi(prout)
  4. if (res == 0 && prout[0]!='0')
  5. {
  6. //erreur
  7. }
  8. return res;
  9. }


[:itm]

n°810364
Taz
bisounours-codeur
Posté le 29-07-2004 à 18:59:17  profilanswer
 

le const bordel
et même avec ça, ça peut toujours échouer je pense, selon l'implémentation

n°810754
blackgodde​ss
vive le troll !
Posté le 30-07-2004 à 09:50:34  profilanswer
 

atoi2("0h my g0d" )
 
[:itm]


---------------
-( BlackGoddess )-
n°810788
antp
Super Administrateur
Champion des excuses bidons
Posté le 30-07-2004 à 10:11:34  profilanswer
 

il suffit de rajouter un "1" devant la chaîne et voir si ça renvoie toujours 0. Dans ce cas il s'agit d'une vraie erreur. Sinon c'était une chaîne avec un ou plusieurs zéros :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


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

  transformer un char* en int

 

Sujets relatifs
VB.NET (transformer une application windows form)choix de transformer la police et le fond d'ecran en xml
transformer les caractères ayant un sens "spécial" en HTMLTransformer une image monochrome en tableau de bit
Comment transformer un Array en Stringtransformer un lien en bouton genre submit
[sql] je vois pas comment transformer ma requete pour mysql 3Bizzarerie pour transformer des mois en lettres
transformer un bouton en lienTransformer un site programmé sur FP en PHP....quand on est nul commen
Plus de sujets relatifs à : transformer un char* en int


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