bonsoir,

je veux ouvrir un fichier texte qui contient des nombres réels de ce type.
exemple:
74.60038368625241 96.79636560473779 112.45476845156641 .....
96.81124655492178 125.60459081423575 145.88186076475341 ...
.....
ces nombres sont séparés par des espaces.

j'ai développée ce bout de code avec aide de l'internet.

il lit bien la première ligne qui commence a partir de 74.60038368625241
mais a la deuxième ligne il commence sa lecture de 125.60459081423575 au lieux de 96.81124655492178 puis la troisième ligne a partir de la 3eme éléments ainsi de suite jusqu'à qu'il ajoute a la fin des valeurs quelconque.

est ce que le pb ca vient de .c_str()?

s'il vous plait peut on m'aider pour corriger ca.


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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
 
	FILE * output_file2=fopen ("D:/main/test1.txt" , "w" );
 
 
	int i=0,w=320,H=280,j;
	int size=w*H ;
	double *xoff =new double[w*H];
	double x=0;
        ifstream fichier("test2.txt", ios::in);  // on ouvre en lecture
 
        if(fichier)
{
        string ligne;
        while(getline(fichier, ligne,' '))  // tant que l'on peut mettre la ligne dans "contenu"
        {		
			x=atof(ligne.c_str());//conversion string-->double
			xoff[i]=x;
 
            //   cout <<x << endl;  // on l'affiche
		//	printf("xoff[%d]=%lf\n",i,xoff[i]);
			i++;
        }
}
 
        else
                cerr << "Impossible d'ouvrir le fichier !" << endl;
 
 
 
		int dim_allouee=0;
	double **gr=0; 
 
    gr = new double*[H]; 
 
    for( dim_allouee=0; dim_allouee<H; dim_allouee++)
		{ 
			gr[ dim_allouee] = new double[w]; 
 
        } 
 
		for(i=0;i<H;i++)
		for(j=0;j<w;j++)		
			{
				//printf("xoff[%d]=%lf\n",j,xoff[j]);
				gr[i][j]=xoff[w*i+j];
 
			}
 
		for(i=0;i<H;i++)
		   {
			   for(j=0;j<w;j++)
					{
					fprintf(output_file2,"%.14lf ",gr[i][j]);
 
					}
				 fprintf(output_file2,"\n");
		  }
 
 
 
 
        return 0;
		 delete[]xoff;
		 for(i=0;i< dim_allouee;i++) // et non for(i=0;i<m_TailleCode;i++) 
		{ 
			delete[] gr[i]; // et non delete [] Matrice[i]; 
 
		} 
	delete [] gr;
 
}
Merci d'avance