Originariamente 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;
}
grazie millissime! non si finisce mai di imparare