Bonjour à tous,

Actuellement je cherche à convertir un tableau de char en double à défaut de savoir stocker directement un double depuis une lecture de fichier.
Avec le compilateur gcc et la fonction atof la conversion char vers double fonctionne très bien.
Avec gcc++, ça marche moins bien apparemment.

Je souhaite convertir cette chaine de caractère en double : 335.677250. J'obtiens 335,000000 après être passé par la fonction atof ou strtod.


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
27
28
29
30
31
32
33
34
35
36
37
38
39
 
 
#include <iostream>
#include <string>
#include <fstream>
#include <stdio.h>
 
using namespace std;
 
    //char nomfich[21];
    char donnee[100];
    char donnee_stock[100][100];
    double don;
    int n=0;
 
    FILE * entree;
 
    entree = fopen ("test.txt","r");
 
    do
    {   fseek (entree,12,SEEK_CUR);
        fread (donnee,11,1,entree); //normalement position 23
        strcpy(donnee_stock[n],donnee);
        n++;
    }
    while( !feof(entree));
 
    fclose(entree);
 
    //on affiche la chaine de caractère 
    std::cout << donnee_stock[0] << endl;
 
    //conversion de la chaîne de caractère en double
    //don = std::atof(donnee_stock[1]);
    don = strtod(donnee_stock[0],NULL);
 
    //affichage en double incorrecte 335,000000
    cout.precision(6);
    std::cout << fixed << don << std::endl;