C - fonction strtod au comportement étrange

Fermé
Psycho - 6 juil. 2015 à 15:06
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 6 juil. 2015 à 15:30
Bonjour,



Je travaille sur un buffer avec des nombres "aléatoires" séparés par des virgules, comme ceci :
"1589.3,12478.359,485.39971" etc

Je souhaite vérifier la longueur des parties entières et décimales.

J'ai fait quelques recherches et j'ai décidé d'utiliser strtod sur mon buffer pour récupérer un nombre et l'analyser.

Le problème, c'est que ça ne marchait pas comme voulu. J'ai donc créé un exemple simple pour mettre en évidence mon problème :

int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%d\n", number);

Ca m'affiche 3113. J'ai fait des recherches et je me suis rendu compte qu'il fallait utiliser %f, car si je demande l'affichage d'un int, c'est normal que j'ai pas de partie décimale.

J'ai donc fait ma correction :

int number;
char myNumber[10] = "3113.14";
number = strtod (myNumber,NULL);
printf("%f\n", number);

Et maintenant, ça m'affiche 0.000000

J'utilise dev c++, parce que je suis pas admin de mon poste donc j'ai pas le choix :/ Je sais pas si ça a un impacte...

Merci pour votre attention et votre aide !
A voir également:

1 réponse

[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
6 juil. 2015 à 15:30
Salut Psycho,

http://www.cplusplus.com/reference/cstdlib/strtod/

Cette fonction renvoie un double.

Là tu stockes le résultat dans number, qui est un int.

Dal
1