ced38 Le 25/10/2001 à 21:53 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.
oui!
tu fais
char* tab[N];
et ensuite, bien sur il faut que tu alloue la place pour chaque chaine...

fabetal_ > Hier, je me suis fait monter par un pote
redangel > et en chevals, ça donne quoi?
Nil> OMG I think I'm gay
À 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.
ced38 Le 28/10/2001 à 15:46 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.
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.
hibou Le 29/10/2001 à 10:37 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
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.