Manipulation de tableau à plusieures dimensions

tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007 - 15 janv. 2007 à 20:41
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 16 janv. 2007 à 15:50
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

tezca_system Messages postés 25 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 5 mars 2007
16 janv. 2007 à 12:03
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
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
16 janv. 2007 à 15:43
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"}
};
0
Kangourou_Nomade Messages postés 92 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 16 janvier 2007
16 janv. 2007 à 15:45
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.
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
16 janv. 2007 à 15:50
Ou alors utilise les allocations dynamiques
++
0
Rejoignez-nous