Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1001 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Remplir un tableau à partir d'un fichier

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Remplir un tableau à partir d'un fichier

n°1966663
alibm
Posté le 16-02-2010 à 23:09:41  profilanswer
 

Bonjour,
J'ai un fichier qui contient
>>
//commentaire
abba*
a b c e
9 2 << taille du tableau
2 2
2 1
1 2
2 2
2 3
4 5
5 1
4 7
8 6
1 3 4
<<
 
 
La 4ème ligne représente la taille du tableau
Le reste des lignes du ligne n°5 jusqu'à ligne n°13 sont
les valeurs à remplir dans le tableau  :whistle:  
 
Je veux lire ces entiers et les mettre dans le tableau,
mais j'ai pas arriver et surtout mettre les bonnes boucles
convenablement pour cette opération, je crois que le programme
entre dans une boucle infini  :heink: où l'exécution du corps des boucles entraîne
un erreur et l'arrêt de l'exécution  :pfff:  
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     FILE *fichier = NULL;
  6.     fichier = fopen("d:\\a.txt", "r" );
  7.     if (fichier != NULL)
  8.     {
  9.     char ligne[32];
  10.         char space,un_char_de_ligne=' ';
  11.         int convertion,m=0,n=0,f=0,nb_line_tab,
  12.         nb_col_tab,nb_line_fichier = 0,i,
  13.         tab_t[nb_line_tab][nb_col_tab];
  14.         while(nb_line_fichier<4)
  15.         {
  16.             nb_line_fichier++;
  17.             /* lecture de la premiere ligne */
  18.             fgets (ligne, sizeof ligne, fichier);
  19.             /* Affichage de la premiere ligne */
  20.         }
  21.         nb_line_tab=ligne[0] - '0';
  22.         nb_col_tab=ligne[2] - '0';
  23.         int j;
  24.         //  allocation dynamique de tab_t
  25.         tab_t = malloc(nb_line_tab* sizeof(int*));
  26.          for(j=0;j<nb_line_tab;j++)
  27.              tab_t[j]=malloc(nb_col_tab * sizeof(int));
  28.                 printf("\nallocation tab des trans" );
  29.         //fin allocation
  30.         printf("\ndimension de tab des trans [%d][%d] ", nb_line_tab,nb_col_tab);
  31.     //operation
  32.             puts("" );
  33.         for(i=nb_line_fichier ;i<=3+nb_line_tab;i++)
  34.             {
  35.       fgets (ligne, sizeof ligne, fichier);  // on lit une ligne à partir du ligne n°5
  36.             printf("trans %s", ligne);
  37.                 while( f<(nb_col_tab+nb_col_tab/2) && n<nb_col_tab && m<nb_line_tab )
  38.                     {
  39.                         un_char_de_ligne=ligne[f];
  40.                             if (un_char_de_ligne!=space)  // si un char de ligne != " "
  41.                                 {
  42.                                     convertion=un_char_de_ligne - '0';  //char converti en int
  43.                               tab_t[m][n]=convertion; // mettre le int ( char converti) dans le tab
  44.                                     n++;  // ++ colonne
  45.                                 }
  46.                         f++;   // ++ dans ligne pour le char suiv
  47.                     }
  48.                     n=0;    // revenir au colonne 0
  49.                     m++;    //passer au ligne suiv
  50.                 }
  51.         fclose(fichier);
  52.     }
  53.     return 0;
  54. }


 
 
 
 
S'il vous plaît vous pouvez m'aidez corriger ce code,
ou vous pouvez me renseigner sur une autre solution.
Merci d'avance.
Cordialement,

mood
Publicité
Posté le 16-02-2010 à 23:09:41  profilanswer
 

n°1966815
breizhbugs
Posté le 17-02-2010 à 11:55:43  profilanswer
 

Alors je suis pas un pro du C mais quelques remarques en vrac:
-Il me semble que ta déclaration de tab_t est incorrecte  
-la façon dont tu convertis une lettre en nombre ne marche que parce que tes nombres sont composé d'une lettre -> et si le tableau comporte des valeurs >= 10?
-Tu ne fais pas de contrôle d'erreur sur la lecture du fichier (ai je bien lu un nombre, suis je à la fin du fichier?)
-il y a des fonctions pour lire des nombres et d'autre alors pour convertir une chaine de caractère en nombre


Message édité par breizhbugs le 17-02-2010 à 12:02:46

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Remplir un tableau à partir d'un fichier

 

Sujets relatifs
liste chainée et tableau dynamiqueinsérer image dans un fichier php
[ANT] Ouvrir un fichier avec commandeouverture d'un pop up à partir d'une image permutée
Aide Tableau Java[Batch] Extraire dans un nom complet de fichier UNC le nom du fichier
Recherche tableau[Perl] Comment envoyer le contenu d'un fichier text par mail
Batch : chercher un fichier puis lui ajouter des lignesRemplir un tableau à partir d'un fichier - ifstream -
Plus de sujets relatifs à : Remplir un tableau à partir d'un fichier


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR