Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème dns l'ouverture d'un fichier

6 juin 2007 à 18:39:59

Bonjour!
J'ai un problème dans un programme :
le but du programme est de remplir un tableau a l'aide des informations d'un fichier texte de ce type :

# 900.000000 0.010000 q2 p1 p2 J_rel
0.0000 0.559900000 0.000000000 0.000000000 1.093845067 0
0.0100 0.559870120 0.005339291 -0.011315657 1.093767371 -7.250409e-013
0.0200 0.559780458 0.010677626 -0.022634851 1.093534372 -2.897682e-012
0.0300 0.559630946 0.016014052 -0.033961108 1.093146337 -6.512046e-012
0.0400 0.559421472 0.021347618 -0.045297935 1.092603706 -1.155768e-011
0.0500 0.559151880 0.026677383 -0.056648808 1.091907090 -1.802101e-011

j'ai donc écrit un programme qui lit le fichier et range les informations dans un tableau : voila le programme écrit (désolé je n'arrive pas a garder les couleurs comme sur l'IDE:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>

int main(int argc, char *argv[])
{
int taille;
float t,dt;
float **donne;
*donne = new float[6];
FILE *fich = fopen(argv[1],"r");
if (argc>1)
{
if (fich == NULL)
{
printf("Erreur à l'ouverture du fichier xD... :P\n");
}
else
{
fscanf(fich,"# %lf %lf q2 p1 p2 J_rel",&t,&dt);
taille = (int)(t/dt);

//on calcule le nombre de lignes
printf("%d\n",taille);

for (int i = 0; i<6;i++)
{
donne[i] = new float[taille];
}

for (int i=0;i<taille;i++)
{
//boucle de lecture des données, pour l'instant on met chaque donnée dans une case, apres on peut aussi sélectionner juste deux ou trois données à enregistrer.
fscanf(fich," %f %f %f %f %f %f",&donne[0][i],&donne[1][i],&donne[2][i],&donne[3][i],&donne[4][i],&donne[5][i]);
//on a dans l'ordre t q1, q2, p1, p2, J_rel dans le tableau données

}
fclose(fich);//on ferme le fichier on a fini la capture des données.
printf("%lf\n",donne[0][7]);
//test
}
}
else
{
printf("Vous devez fournir un argument");
return(0);
}
system("PAUSE");
return(0);

}

Lorsque je lance le rpogramme, une fenêtre s'ouvre en me disant que le programme doit fermer suite a une erreur. Je ne comprends pas car c'est purtant le code que j'utilise pour toutes les ouvertures de fichier... POurriez-vous m'aider à trouver le problème svp ???
merci d'avance!!!
  • Partager sur Facebook
  • Partager sur Twitter
6 juin 2007 à 19:51:41

on va rendre ton code plus lisible si tu le veux bien (t'as pas le choix en fait :lol: )
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>

int main(int argc, char *argv[])
{
int taille;
float t,dt;
float **donne;
*donne = new float[6];
FILE *fich = fopen(argv[1],"r");
if (argc>1)
{
if (fich == NULL)
{
printf("Erreur à l'ouverture du fichier xD... :p\n");
}
else
{
fscanf(fich,"# %lf %lf q2 p1 p2 J_rel",&t,&dt);
taille = (int)(t/dt);

//on calcule le nombre de lignes
printf("%d\n",taille);

for (int i = 0; i<6;i++)
{
donne[i] = new float[taille];
}

for (int i=0;i<taille;i++)
{
//boucle de lecture des données, pour l'instant on met chaque donnée dans une case, apres on peut aussi sélectionner juste deux ou trois données à enregistrer.
fscanf(fich," %f %f %f %f %f %f",&donne[0][i],&donne[1][i],&donne[2][i],&donne[3][i],&donne[4][i],&donne[5][i]);
//on a dans l'ordre t q1, q2, p1, p2, J_rel dans le tableau données

}
fclose(fich);//on ferme le fichier on a fini la capture des données.
printf("%lf\n",donne[0][7]);
//test
}
}
else
{
printf("Vous devez fournir un argument");
return(0);
}
system("PAUSE");
return(0);

}


et.. :o mais c'est un code en C!!!

il existe une classe dans <fstream> pour ouvrir (ou ecrire) dans un fichier. ( click ici pour voir le tuto d'un Zero qui t'apprend tres bien comment faire )
  • Partager sur Facebook
  • Partager sur Twitter