1

Comment fait-on pour faire une matrice contenant des chaînes de caractères ? Est-ce qu'il suffit de faire :
char *TxtMat[n° d'éléments] ?
[edit]Edité par ced38 le 25-10-2001 à 21:54:27[/edit]
En HIBERNATION !
C'est une façon pour moi de dire merde à la société :D

MERCI sBibi ENCORE ET ENCORE POUR ...

From Grenoble.

2

oui!
tu fais
char* tab[N];
et ensuite, bien sur il faut que tu alloue la place pour chaque chaine...
avatar
fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay

3

À ta place, je mettrais plutôt:
char *(tab[n]);
char *tab[n]; marche aussi, mais tu risques de confondre avec char (*tab)[n]; qui est un pointeur vers un tableau, pas un tableau de pointeurs.

avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

thx wink
En HIBERNATION !
C'est une façon pour moi de dire merde à la société :D

MERCI sBibi ENCORE ET ENCORE POUR ...

From Grenoble.

5

Il faut comprendre que les crochets [] sont proritaires par rapport à * : le compilateur crée un tableau à 10 cases, et on lui indique ensuite avec * qu'on y mettra des pointeurs; ces pointeurs pointeront sur la chaîne de caractère....
char *tableau[n];
Il suffit ensuite de mettre :
tabeau[0]=chaine0;
tabeau[1]=chaine1;
tabeau[2]=chaine2;
...
Ce qui est génial, c'est les chaînes n'ont pas forcément les même longueurs..smile

6

et si je fais *(char[10]), j'aurais un pointeur vers un tableau qui acceptera 10 entrée d'une seule lettre ?
En HIBERNATION !
C'est une façon pour moi de dire merde à la société :D

MERCI sBibi ENCORE ET ENCORE POUR ...

From Grenoble.

7

Non. char *(tab[10]) te donne un tableau de 10 char *, donc de 10 chaînes de caractères de longueur quelconque.

En revanche, char (*tab)[10] fait exactement ce que tu dis. Et le pointeur ne pointera vers rien si tu ne mets pas de malloc. Mais avec des malloc, tu peux faire des matrices dynamiques avec un seul malloc en utilisant cette technique.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Plus j'y réfléchi, plus je m'embrouille:

Pour moi, char (*tab)[10] , je le comprend comme un pointeur (*tab) qui pointe sur un pointeur d'une chaîne de caractère de longueur 10....

Je ne comprend pas alors la techinque pour faire des tableau dynamiques

ced38> *(char[10]) ne veux rien dire : char est compris ici comme une variable ce qui est impossible

9

L'idée des déclarations C est: On déclare toujours les variables de la manière de laquelle on compte y accéder.
Donc une variable char (*tab)[10] est une variable à laquelle on accède par: (*tab)[n].
Donc on déréférence d'abord, puis on prend un élément. On est donc devant un pointeur vers un tableau.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité