Charger fichier txt dans tableau

Charger fichier txt dans tableau - C - Programmation

Marsh Posté le 27-04-2015 à 18:43:30    

Bonjour à tous,
Pour un projet je dois charger des nombres dans un fichier txt pour les remettre dans mon tableau. Pour cela j'ai créé ce sous-programme :  

Code :
  1. void chargerDonjon(char* monFichier, sCaseDonjon tab[LIGNES][COLONNES])
  2. {
  3.     FILE* fin;
  4.     int i,j;
  5.     if ((fin=fopen(monFichier, "r" )) == NULL)
  6.     {
  7.         fprintf(stderr, " Echec ouverture du fichier %s ", monFichier);
  8.         exit(EXIT_FAILURE);
  9.     }
  10.     for(i=0; i < LIGNES; i++)
  11.     {
  12.         for(j=0; j < COLONNES; j++)
  13.         {
  14.             fscanf(fin, "%d %d \n", &(tab[i][j].typeCase), &(tab[i][j].statutCase));
  15.         }
  16.         fclose(fin);
  17.     }
  18. }


 
Le problème est que ce sous programme semble ne pas marcher... Je solicite donc votre aide !
Merci d'avance

Reply

Marsh Posté le 27-04-2015 à 18:43:30   

Reply

Marsh Posté le 27-04-2015 à 19:24:03    

C'est quoi la définition de sCaseDonjon? Donne un exemple compilable.

Message cité 1 fois
Message édité par rat de combat le 27-04-2015 à 19:24:27
Reply

Marsh Posté le 27-04-2015 à 19:26:38    

Tu fermes ton fichier après la première ligne

Reply

Marsh Posté le 27-04-2015 à 19:37:13    

rat de combat a écrit :

C'est quoi la définition de sCaseDonjon? Donne un exemple compilable.

 
Code :
  1. struct caseDonjon
  2. {
  3.     int typeCase; //0: sol nu, 1: mur exterieur, 2: mur interieur, 3: porte fermee, 4: porte ouverte, 5: rochers
  4.     int statutCase; // 0: vide, 1: occupee
  5. };
 
Code :
  1. sCaseDonjon donjon[LIGNES][COLONNES]=
  2.     {
  3.         {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}},
  4.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  5.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  6.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  7.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  8.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  9.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  10.         {{1,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{1,0}},
  11.         {{1,0},{0,0},{0,1},{0,0},{0,0},{0,0},{2,0},{0,0},{0,0},{1,0}},
  12.         {{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}}
  13.     };


Message édité par val916 le 27-04-2015 à 19:40:22
Reply

Marsh Posté le 27-04-2015 à 19:37:34    

caps lock a écrit :

Tu fermes ton fichier après la première ligne


 
Pardon ? Je n'ai pas bien compris :)

Reply

Marsh Posté le 27-04-2015 à 19:47:39    

Le problème c'est qu'avec un tel déficit d'information on va avoir du mal à deviner le ou les problèmes, si tu n'as pas 5000lignes il est préférable que tu postes ton code entier ici (avec les balises adéquates) et que tu fournisses également ton fichier texte.
 
Quant à ce que je disais :

Code :
  1. for(i=0; i < LIGNES; i++)
  2.     {
  3.         for(j=0; j < COLONNES; j++)
  4.         {
  5.             fscanf(fin, "%d %d \n", &(tab[i][j].typeCase), &(tab[i][j].statutCase));
  6.         }
  7.         fclose(fin);  <--- ici tu fermes ton fichier après avoir parcouru qu'une seule ligne
  8.     } // le fclose doit aller ici

Reply

Marsh Posté le 27-04-2015 à 19:52:53    

caps lock a écrit :

Le problème c'est qu'avec un tel déficit d'information on va avoir du mal à deviner le ou les problèmes, si tu n'as pas 5000lignes il est préférable que tu postes ton code entier ici (avec les balises adéquates) et que tu fournisses également ton fichier texte.
 
Quant à ce que je disais :

Code :
  1. for(i=0; i < LIGNES; i++)
  2.     {
  3.         for(j=0; j < COLONNES; j++)
  4.         {
  5.             fscanf(fin, "%d %d \n", &(tab[i][j].typeCase), &(tab[i][j].statutCase));
  6.         }
  7.         fclose(fin);  <--- ici tu fermes ton fichier après avoir parcouru qu'une seule ligne
  8.     } // le fclose doit aller ici



 
Merci de votre aide, vraiment une erreur bête de ma part.
Concernant l'écriture des lignes sur le forum je prend note! C'est ma première fois ici (pas taper) :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed