Se usi la malloc e a è già un array di puntatori, non c'è necessità di passare attraverso un altro puntatore.
Ti basta
Occhio ! Non usare sizeof ma strlen()+1codice:if(i==n) { a[i] = (char *) malloc(strlen(v)+1); strcpy(a[i], v); n++; }
No MP tecnici (non rispondo nemmeno!), usa il forum.