Structurer des données dans un tableau
Bonsoir tout le monde !
Je suis débutante en langage C et suis confrontée à un petit problème, je m'explique :
J'ai un tableau contenant différents mots dans une boucle.
Exemple de valeurs de mon tableau : "bonjour vous tous".
Pour la suite de mon programme je dois structurer mes données, c'est à dire identifier chaque mots de chaque ligne, j'insère donc les mots dans un tableau à 2 dimensions (tab[9][8][25]) où 9 représentes le nombre de lignes et 8 le nombre de mots (de 25 caractères maximum) par ligne.
Mon problème est qu'à chaque tour de boucle la valeur de mon tableau change, je n'ai donc pas toujours 3 mots dans mon tableau, j'ai donc codé cela (Je vous préviens c'est du gros bidouillage)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
char tab[9][8][25];
char ligne[100] ;
fgets(ligne, 100,fic) ;
nb = sscanf(ligne, "%s%s%s%s",toto,toto,toto,toto);
switch (nb) {
case -1 :sscanf("-1","%s",tab[i]) ; break;
case 1 : sscanf(ligne,"%s",tab[i][0]); break;
case 2 : sscanf(ligne,"%s%s",tab[i][0],tab[i][1]); break;
case 3 : sscanf(ligne,"%s%s%s",tab[i][0],tab[i][1],tab[i][2]);break;
case 4 : sscanf(ligne,"%s%s%s%s",tab[i][0],tab[i][1],tab[i][2],tab[i][3]; break;
} |
Comment auriez-vous coder cela plus proprement ? J'ai vu sur la faq de ce site ce code très intéressant qui permet d'allouer de la mémoire dynamiquement à un tableau à 2 dimensions, j'imagine qu'il faudrait que j'applique cela mais je ne comprends pas le code, je n'ai pas encore eu de cours sur les pointeurs.
Code:
1 2 3 4 5 6
|
char **tab;
tab= malloc(sizeof(*tab)*9);
for (i=0;i<9;i++){
tab[i] = malloc(sizeof(**tab)*8);
} |
Merci beaucoup par avance et bonne semaine.