Devi usare un puntatore a puntatore per avere restituito il valore dell'indirizzo dell'area allocata. Ovvero

codice:
int dizionario(ind **indice);
codice:
num=dizionario(&indice);
codice:
int dizionario(ind **indice) {
codice:
*indice = (ind *)malloc(num*sizeof(ind));
codice:
fscanf(diz,"%s", (*indice)[i].parola);