Luc@s, il tuo codice contiene un 'errore importante, overo il fatto che non allochi la memoria per il campo 'el' della struttura che deve contenere la stringa, ecco il codice corretto:
codice:#include <stdio.h> #include <string.h> #include <assert.h> #include <malloc.h> struct List { char *el; struct List *next; struct List *prev; }; void init(struct List *aux, char *el); void add(struct List *aux, char *el); void init(struct List *aux, char *el) { assert(aux != NULL); //Bisogna allocare la memoria prima di effettuare la copiatura aux -> el = (char *)malloc(100 * sizeof(char)); strcpy(aux->el, el); aux->next = NULL; aux->prev = NULL; } void add(struct List *aux, char *el) { assert(aux != NULL); while(aux->next != NULL) aux = aux->next; struct List *tmp = (struct List *)malloc(sizeof(struct List)); //Bisogna allocare la memoria prima di effettuare la copiatura tmp -> el = (char *)malloc(100 * sizeof(char)); strcpy(tmp->el, el); tmp->next = NULL; tmp->prev = aux; aux->next = tmp; } int main(int argc, char *argv[]) { struct List *head = (struct List *)malloc (sizeof(struct List)); init(head, "Luca1"); add(head, "Luca2"); add(head, "Luca3"); while(head != NULL) { printf("%s\n", head->el); head = head->next; } char c[10]; scanf("%s", c); return 0; }

Rispondi quotando