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 :
Je compile sur linux avec gcc3.4.6 et sur Mac avec gcc4.7.2 (64bits).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Si quelqu'un trouve une erreur quelque part, ou a une explication à donner, je suis preneuse !
Merci pour votre aide
Partager