grazie millissime! non si finisce mai di imparareOriginariamente inviato da Samuele_70
L'errore è che allocavi la memoria per ogni elemento non con la dimensione
della struttura, ma con la dimensione del suo puntatore.
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct t_automobile //struttura accessori { char macchina[20]; struct t_automobile *next; } *PointAuto; int main() { int count=0; char temp[20]; PointAuto HeadAuto, CurrPtr; // puntatori a struct automobile HeadAuto = (PointAuto)malloc(sizeof(struct t_automobile)); // crea il primo elemento della lista; CurrPtr = HeadAuto; printf("Inserire l'automobile, F per finire.\n\nNome > "); scanf("%s", temp); while( strcmp( temp, "F") != 0 ) // ciclo per le auto { strcpy( CurrPtr->macchina, temp); CurrPtr->next = (PointAuto)malloc(sizeof(struct t_automobile)); //Crezione del nuovo elemento della lista macchine CurrPtr = CurrPtr->next; fflush(stdin); printf("Nome > "); scanf("%s", temp); } CurrPtr->next = NULL; CurrPtr = HeadAuto; printf("Contenuto della lista:\n"); while(CurrPtr->next!=NULL) { printf("%2d) %s->\n", count++, CurrPtr->macchina); CurrPtr = CurrPtr->next; } free(HeadAuto); system("pause"); return 0; }![]()