Salve a tutti, ho la seguente parte codice che dovrebbe servirmi per risolvere un'esercizio per un'esame:

codice:
typedef struct M
{
	char  *Molecola;
} ;

            char nome[80];
            int elem = 10;

            M* NomeMolecola = (M*) malloc(elem * sizeof(M));

	if (NomeMolecola == NULL)
		printf("Errore");

	M* p;
	p = NomeMolecola;
	for (int i=0; i < elem; i++)
	{
		p->Molecola = NULL;
		p++;
	}

	for (int i=0; i < elem; i++)
	{
                          printf("nome molecola: \n";
		scanf("%s", nome);
		NomeMolecola->Molecola = strdup(nome);
		NomeMolecola++;
	}

	
	for (int i=0; i < elem; i++)
	{
		printf("%s\n", NomeMolecola[i].Molecola);
		system("pause");
	}
Non riesco a capire per quale motivo quando faccio la printf del contenuto il programma va in crash, in debug dopo la scanf le strutture puntano a dei valori validi, nella printf no!
Grazie in anticipo !