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;
}