Lecture d'un double avec sscanf
Bonjour,
Je développe en C++ et pour des besoins de portabilité je dois compiler mes sources C++ sur MacOS (je travaille habituellement sur une machine linux 64).
Je rencontre un problème lors de la lecture d'une chaîne de caractères représentant un double : lire "5.0" ou "5." est identique sous linux, mais sur Mac "5." est reconnu comme étant un nombre et un caractère.
Voici un exemple simple pour illustrer le problème :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include <iostream>
using namespace std;
void read_val(double*, char*);
int main()
{
double val = 0.;
char word[20] = "5.";
cout << "word = [" << word << "]" << endl;
read_val(&val, word);
return 0;
}
void read_val(double *value, char* word)
{
char tmp_char[1];
int ret = sscanf (word,"%lg %c",value, tmp_char);
cout << "val = " << value[0] << endl;
cout << "tmp = " << tmp_char << endl;
cout << "ret = " << ret << endl;
} |
Je compile sur linux avec gcc3.4.6 et sur Mac avec gcc4.7.2 (64bits).
Si quelqu'un trouve une erreur quelque part, ou a une explication à donner, je suis preneuse !
Merci pour votre aide ;)