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 : 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;
}
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