laly | Je cherche à faire un programme au cours duquel je doit lire dans un fichier (plusieurs.txt) le nom d'autres fichier qu'il me faut ouvrir par la suite.
Mon but est de lancer plusieurs appels à mes fonctions mais avec des fichiers de donnés à analyser différents (et des combinaisons différentes).
Je souhaites pouvoir ainsi visualiser les étapes du traitement de mes données et aussi recupperrer l'etat de mon systeme a la fin de chacune des analyses.
Pour cela, je met dans un fichier .txt les noms des fichiers utiles aux diverses analyses.
celui-ci est de la forme suivante :
tout d'abord le fichiers où seront mis les etats finaux, puis le nom de chaque simulation suivi chacune du fichier model.txt contennant toutes les caracteristiques au temps 0 (model.txt)puis le fichier resultat.out ou seront stockées au fur et a mesure les étapes de cettte analyse et le fichiers contenant l'evolution de diverses variables au cours du temps ( fichier variables.txt ) et ce pour chaque simulation les unes à la suite des autres.
exemple de contenu de ce fichier plusieurs.txt :
Code :
- resultatglobal.out
- #
- simulation1
- ############
- model1.txt
- resultat1.out
- variables.txt
- #
- simulation2
- ############
- model2.txt
- resultat2.out
- variables.txt
|
ce que je fais : dans mon main j'appellle une fonction ( int lecturedesnomdesfichiers(const char* sourcesplusieurs, int nbalire, char *TABnomfich[10], int nbldejalues) ) pour recuppérer les noms de fichiers et avec le resultat je lance les analyses.
pour le moment il n'arrive pas à ouvrir les fichiers....
les appels dans le main sont de la forme :
Code :
- nb_lignes_lues += lecturedesnomdesfichiers( sourcesplusieurs, nbalire, TABnom, nb_lignes_lues );
- numsimulation = TABnom[0];
- model = TABnom[1];
- resultat = TABnom[2];
- phietc = TABnom[3];
- simulation( resultatglobal,model,resultat,phietc,nvariables,numsimulation );
|
quand a ma fonction de lecture dans le fichier...
Code :
- int lecturedesnomdesfichiers(const char* sourcesplusieurs, int nbalire, char *TABnomfich[10], int nbldejalues){
- int nb_l_lu = 0, i, j;
- char* TABlu[100];
- for(i=0;i<100;i++){
- TABlu[i] = (char *)malloc (100* sizeof(char *));
- }
-
- FILE *f = fopen( sourcesplusieurs, "r" );
- if (f==NULL) {
- printf("erreur ouverture du fichier contennant les noms des fichiers \n" );
- return -1;
- }
-
- for(i=0;i<nbldejalues+nbalire;i++){
- if (i<nbldejalues){/* lignes deja lues et donc d'analyse deja faite */
- if (fgets( TABlu[nb_l_lu], 100, f ) != NULL){
- if(TABlu[nb_l_lu][0] == '#'){
- i--; /* pour ne pas prendre en compte les lignes de commentaire */
- }
- }
- }else if (fgets( TABlu[nb_l_lu], 100, f ) != NULL){
- if(TABlu[nb_l_lu][0] == '#'){
- i--;
- /* c'est une ligne de commentaire donc on ne fait rien */
- }else{
- nb_l_lu ++;
- }
- }
- }
-
- for(j=0;j<nbalire;j++){
- for(i=0;i<50;i++){ // les caracteres d'une ligne
- if(TABlu[j][i] != '\t' && TABlu[j][i] != ' ' && TABlu[j][i] != '\n'){
- TABnomfich[j][i] = TABlu[j][i];
- }
- }
- }
- fclose(f);
- return nb_l_lu ;
- }
|
ensuiet dans les fonctions d'analyse je fais des fopen de la forme :
Code :
- FILE *f = fopen( model, "r" );
|
[/code] |