gets legge una riga non una parola, char *a[100] non allochi la memoria necessaria!
Devi rivedere tutto il programma!