[C]insere liste chaine dans un tableau
bonsoir à tous,
jai une fonction qui prend en enrée une liste chaine(liste de mots) et qui la stocke dans le 1er elemnt du tableau.
apres, un simple affichege
ya une erreur dans la 6eme ligne du code :
cannot convert `Liste**' to `Liste*' in assignment
merci
jai une fonction qui prend en enrée une liste chaine(liste de mots) et qui la stocke dans le 1er elemnt du tableau.
apres, un simple affichege
void GenNseq(Liste **seq) {int i; char *mot; Liste ** tab; tab = (Liste **) malloc (20 * sizeof(Liste *)); tab [0]=&seq; printf ("%s", *tab[0]->mot); }
ya une erreur dans la 6eme ligne du code :
cannot convert `Liste**' to `Liste*' in assignment
merci
A voir également:
- [C]insere liste chaine dans un tableau
- Liste déroulante excel - Guide
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Insérer une vidéo dans powerpoint - Guide
5 réponses
Re,
seq c'est un pointeur de pointeurs de type Liste donc *seq c'est un pointeur
**tab est un pointeur de pointeurs de type Liste donc tab[0] est un pointeur de type Liste est on peut écrire aussi *tab pour le 1er élément
*tab ne peux pas contenir l'adresse d'un pointeur de pointeurs comme tu as essayé de le faire
voici un exemple (j'ai remplacé le type Liste avec int
seq c'est un pointeur de pointeurs de type Liste donc *seq c'est un pointeur
**tab est un pointeur de pointeurs de type Liste donc tab[0] est un pointeur de type Liste est on peut écrire aussi *tab pour le 1er élément
*tab ne peux pas contenir l'adresse d'un pointeur de pointeurs comme tu as essayé de le faire
voici un exemple (j'ai remplacé le type Liste avec int
lami20j@debian:~$ cat ccm.c #include<stdio.h> #include<stdlib.h> void GenNseq(int **seq) { int i; int ** tab; tab = (int **) malloc (20 * sizeof(int *)); tab [0]=*seq; printf ("%p - %p\n", tab[0],*seq); } int main() { int **seq; GenNseq(seq); return 0; } lami20j@debian:~$ gcc ccm.c lami20j@debian:~$ ./a.out 0x489d - 0x489d lami20j@debian:~$j'affiche seulement les adresses
1) Il faut juste faire un tableau de pointeurs vers des Liste (genre un Liste **). Attention car qui dit malloc dit free et tu as tendance à les oublier, alors que c'est TRÈS important (tu t'es déjà demandé pourquoi quand tu lançais et fermais word 5 fois de suite, la RAM diminuait petit à petit ? :p) :
Ici on alloue un tableau d'int, mais si c'est un tableau de "Liste *" il suffit simplement de remplacer les "int" par "Liste *" :
2) Si tu peux programmer en C++ c'est encore plus facile, c'est comme des legos :
Pour plus de détails sur la méthode en C++
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library
Bonne chance
#include <stdlib.h> int main(){ unsigned n = 5; int *p = (int *)malloc(n*sizeof(int)); // alloue un tableau de 5 entiers //... // dès que je n'ai plus besoin de la zone allouée je la libère : free(p); return 0; }
Ici on alloue un tableau d'int, mais si c'est un tableau de "Liste *" il suffit simplement de remplacer les "int" par "Liste *" :
#include <stdlib.h> #include "Liste.h" // le header dans lequel la structure Liste est déclarée int main(){ unsigned n = 5; Liste **p = (Liste **)malloc(n*sizeof(Liste *)); // alloue un tableau de 5 pointeurs vers Liste //... // dès que je n'ai plus besoin de la zone allouée je la libère : free(p); return 0; }
2) Si tu peux programmer en C++ c'est encore plus facile, c'est comme des legos :
#include <list> #include <vector> int main(){ std::vector<std::list<int> > mon_tableau_de_liste; // ... // pas de malloc/calloc/... ou de new, dont pas de free ou de delete return 0; }
Pour plus de détails sur la méthode en C++
http://www.commentcamarche.net/faq/sujet 11255 introduction a la stl en c standard template library
Bonne chance
Salut Miss,
et tu as tendance à les oublier>
c'était par paresse ;-)
et tu as tendance à les oublier>
c'était par paresse ;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
salut Lami, jai un probleme avec cette fonction qui doit extraire le dernier mot d'une phrase donnée en parametre.
Qaund j'execute le programme se plante.
Qaund j'execute le programme se plante.
char* dernier(char *phrase) { char *pointeur; char* copi; char *separateur = { " " }; //char *buff; // buff = (char*)malloc(sizeof(char)) ; // buff =phrase; //strcpy(buff, phrase); pointeur = strtok(phrase, separateur ); while( pointeur != NULL){ copi = pointeur; printf("%s\n", pointeur); pointeur = strtok(NULL, separateur); } printf("-> %s\n", copi);// le dernier mot }