alibm | 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 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 où l'exécution du corps des boucles entraîne
un erreur et l'arrêt de l'exécution
Code :
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- FILE *fichier = NULL;
- fichier = fopen("d:\\a.txt", "r" );
- if (fichier != NULL)
- {
- char ligne[32];
- char space,un_char_de_ligne=' ';
- int convertion,m=0,n=0,f=0,nb_line_tab,
- nb_col_tab,nb_line_fichier = 0,i,
- tab_t[nb_line_tab][nb_col_tab];
- while(nb_line_fichier<4)
- {
- nb_line_fichier++;
- /* lecture de la premiere ligne */
- fgets (ligne, sizeof ligne, fichier);
- /* Affichage de la premiere ligne */
- }
- nb_line_tab=ligne[0] - '0';
- nb_col_tab=ligne[2] - '0';
- int j;
- // allocation dynamique de tab_t
- tab_t = malloc(nb_line_tab* sizeof(int*));
- for(j=0;j<nb_line_tab;j++)
- tab_t[j]=malloc(nb_col_tab * sizeof(int));
- printf("\nallocation tab des trans" );
- //fin allocation
- printf("\ndimension de tab des trans [%d][%d] ", nb_line_tab,nb_col_tab);
- //operation
- puts("" );
- for(i=nb_line_fichier ;i<=3+nb_line_tab;i++)
- {
- fgets (ligne, sizeof ligne, fichier); // on lit une ligne à partir du ligne n°5
- printf("trans %s", ligne);
- while( f<(nb_col_tab+nb_col_tab/2) && n<nb_col_tab && m<nb_line_tab )
- {
- un_char_de_ligne=ligne[f];
- if (un_char_de_ligne!=space) // si un char de ligne != " "
- {
- convertion=un_char_de_ligne - '0'; //char converti en int
- tab_t[m][n]=convertion; // mettre le int ( char converti) dans le tab
- n++; // ++ colonne
- }
- f++; // ++ dans ligne pour le char suiv
- }
- n=0; // revenir au colonne 0
- m++; //passer au ligne suiv
- }
- fclose(fichier);
- }
- return 0;
- }
|
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, |