Pb fonction strtok pour parser
Bonjour,
J'essaye de parser un fichier csv avec la fonction strtok cela fonctionne plutot bien. Seulement quand j'essaye de stocker les données dans une matrice mes données sont erronées ?
Voici mon fichier CSV :
Voici mon code :
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 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
| int main(int argc, _TCHAR* argv[])
{
FILE *myfile;
char line1[1000];
char line2[1000];
char *stptr;
int lcount = 0; // Nombre de cellule
double**data; // tableau de stockage
int i,j;
double n=0;
double nb_colonnes=2;
double duree_historique=10;
//Allocation table data
data=(double**)malloc(duree_historique*sizeof(double*));
for (j = 0;j<duree_historique;j++)
{
data[j]=(double*)malloc(nb_colonnes*sizeof(double));
}
// Initialisation
for(i=0;i<duree_historique;i++){
for (j = 0;j<nb_colonnes;j++)
{
data[i][j] = 0;
}
}
while (fgets(line1,sizeof line1,myfile) != NULL){ // parcours le fichier
lcount = 0;
strcpy(line2,line1);
stptr = strtok (line2,";");
j=0;
while (stptr != NULL){
cout<<"\ni = "<<i;
cout<<" j = "<<j<<"\n";
printf ("%s ",stptr);
stptr = strtok (NULL, ";");
n=atof(line2);
data[i][j]=n;
j++;
}
i++;
j--;
}
fclose(myfile);
//Affichage du tableau de stockage
for(i=0;i<10;i++){
for(j=0;j<2;j++){
cout<<data[i][j]<<" ";
}
cout<<"\n";
}
getch();
return 0;
} |
La sortie console avec le strtok me donne bien les bonnes valeurs.
Mais lorsque j'affiche ma matrice j'obtiens :
Une idée ?