prova
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct _elem {
	long		 val;
	char	 str[100];
	struct  _elem *next;
} Elem, *List;



int main(void) {
	Elem * L = (Elem *) malloc( sizeof(Elem));

	memset(L->str, 0x00, 100);
	//cosi non funziona :-(
	scanf("%s", L->str);
	printf("%s\n", L->str );
}
ps è la terza discussione che apri sulla stessa cosa, magari rivedi la teoria dei puntatori, che forse non l'hai capita bene

il codice che ti ho messo adesso funziona