transformer un char* en int - C - Programmation
Marsh Posté le 09-06-2004 à 16:58:48
ouh putain, que Taz ne passe pas par ici
Marsh Posté le 09-06-2004 à 17:00:43
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 :-)
Marsh Posté le 09-06-2004 à 17:03:39
t'as la fonction strtol() pour transformer une chaine en integer
Marsh Posté le 09-06-2004 à 17:04:08
moktar1er a écrit : ça ne t'est jamais venu à l'esprit d'utiliser sscanf |
oui, aussi !
Marsh Posté le 09-06-2004 à 17:07:48
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 :
|
Marsh Posté le 09-06-2004 à 17:08:23
ReplyMarsh Posté le 09-06-2004 à 18:57:39
mirascheat a écrit : merci atoi marche très bien |
ah ouais ? et comment tu fais pour gérer une erreur éventuelle ? genre atoi("Taz" )
Marsh Posté le 09-06-2004 à 19:23:20
Taz a écrit : ah ouais ? et comment tu fais pour gérer une erreur éventuelle ? genre atoi("Taz" ) |
I trust the end-user !
Marsh Posté le 09-06-2004 à 19:26:16
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
Marsh Posté le 09-06-2004 à 19:31:57
mirascheat a écrit : Bonjour, |
omg !
Marsh Posté le 09-06-2004 à 19:32:53
vais peut-être dire un bêtise, mais scanf() prends les données sur le flux d'entrée, non ? on peut changer ça ?
Marsh Posté le 09-06-2004 à 19:39:10
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
Marsh Posté le 10-06-2004 à 02:14:14
Je dis ça juste comme ça mais la question doit bien etre posée à peu près 2 fois par semaine...
Marsh Posté le 29-07-2004 à 17:43:56
tant qu'on se lasse pas de répondre 2 fois par semaine, tout va bien
Marsh Posté le 29-07-2004 à 17:46:17
Taz a écrit : le problème avec atoi, c'est le code d'erreur est 0 qui est aussi un int valide |
strcmp(chaine, "0" )
Marsh Posté le 29-07-2004 à 18:32:15
ReplyMarsh Posté le 29-07-2004 à 18:36:59
ReplyMarsh Posté le 29-07-2004 à 18:44:28
ReplyMarsh Posté le 29-07-2004 à 18:53:34
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 ?
Marsh Posté le 29-07-2004 à 18:57:26
bande de niais
Code :
|
Marsh Posté le 29-07-2004 à 18:59:17
le const bordel
et même avec ça, ça peut toujours échouer je pense, selon l'implémentation
Marsh Posté le 30-07-2004 à 10:11:34
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
Marsh Posté le 09-06-2004 à 16:56:28
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 :-)