En se référant à “C – Aider à comprendre comment écrire une fonction dans une fonction (list_map)”

J’ai le même professeur: j’ai lu le forum:

Comment écrire une fonction dans une fonction (list_map)

Il est très utile de comprendre le concept de la fonction mais je ne suis pas sûr de l’utiliser correctement …

Voici mon code .. Faites-moi savoir si je suis sur la bonne voie …

Supposons que j’ai un tableau de 10 listes liées dans lesquelles les listes liées contiennent des ints

Maintenant, j’aimerais sortinger la liste en appelant list_map (); une fonction

Donc, mon principal ressemble à quelque chose comme ça:

int x = 10; LLIST *mylist[x]; bzero(mylist, sizeof(LLIST *)*x); . . for(i=0; i< 10; i++) { //Segfalt list_map(mylist[i],sort); } 

ma list_map ressemble à:

 void list_map( LLIST *list, void (*f)(void *) ) { printf("Sort"); f(list); } 

et sortinger:

 void sort(LLIST *n) { //Sort Code } 

L’erreur que je reçois est une erreur de segmentation lorsque je l’exécute.

Veuillez excuser le manque de code, je sais que ma fonction de sorting fonctionne, je l’ai déjà testée et elle affiche chaque liste. Si vous avez besoin de voir quelque chose de plus en détail, faites-le-moi savoir.

bzero met à zéro la mémoire, il n’alloue pas de mémoire, utilisez malloc

 int x = 10; LLIST **mylist; mylist = (LLIST**)malloc(sizeof(LLIST *)*x); . . for(i=0; i< 10; i++) { //Segfalt list_map(mylist[i],sort); } void list_map( LLIST *list, void (*f)(void *) ) { printf("Sort"); f(list); } 

Allouez-vous mylist? D’après ce que vous avez ici, cela ressemble à tout ce qui aurait pu être causé par un segfault par mylist. Êtes-vous sûr que cela devrait être LLIST *mylist[x]; et non LLIST mylist[x]; ?