Manipulation de tableau à plusieures dimensions

Signaler
Messages postés
25
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
5 mars 2007
-
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
-
Bonsoir,

Je vous presente la déclaration suivante:

const char *etape[][9]=
{
       {""},
       {"Signature", "ELF"},
       {"Type", "type1", "type2"},    
       {"Class", "class1", "class2"},
       {"Data encoding", "ok1", "ok2"}
       {"Test0", "test1", "test2", "test3", "test4", "test5", "test6", "test8","test9"}
};

Peut importe ce qu'il comporte, je mime la methode de gestion des erreurs qu'utilise de nombreuses sources en C, c a d regrouper toutes les chaines de caracteres dans un tableau et pointer dessus ensuite avec l'indice qui correspond à l'erreur.
Mon probleme ici est que le compilateur me force à renseigner la capacité du 2eme tableau (voir le 3 en rose).
Ce qui me derange enormement c je vais me retrouver avec un tableau qui contient que 3 élements et d'autre qui en contiendront 9 et que l'on me force quoi qu'il arrive à attribuer 9 ocets.
Est ce que ca va etre du gachi de memoire tout cela ou y a t'il une autre methode selon vous?
Probablement avec des pointeurs?

4 réponses

Messages postés
25
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
5 mars 2007

Désolé pour la promptitude du poste j'etais assez pressé hier.
Donc c assez derangeant selon moi de devoir attribuer obligatoirement un nombre d'octet MAX à la deuxieme dimension d'un tableau car elle va etre variable, allant de 3 à 9.
Avez vous une technique ou une astuce, un bout de code ou des exemples.
Merci par avance.

"Du code pour les connaisseurs pas pour les gros lécheurs"
"J'reste underground du moment qu'j'reste integere que Microsoft me tienne bien le zgeg
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007

Les tableaux a plusieurs dimensions c'est la misere en c. Effectivement, il t'obligera a remplir ce parametre, car tu ne peux pas faire une liste de liste de liste de char (c'est ce que tu fais) sans preciser la taille.

Il n'y a que la premiere dimension qui n'a pas besoin de parametres.

const char *etape[6][9]=
{
{""},
{"Signature", "ELF"},
{"Type", "type1", "type2"},
{"Class", "class1", "class2"},
{"Data encoding", "ok1", "ok2"},
{"Test0", "test1", "test2", "test3", "test4", "test5", "test6", "test8","test9"}
};
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007

Maintenant, si tu veux vraiment avoir de la flexibilite dans ton code et ne pas reinventer la roue, je te conseille d'utiliser du c++ : vector et string.
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
21
Ou alors utilise les allocations dynamiques
++