Ok ragazzi ho risolto.
void text(FILE *fp, int *dim, int n)
text(fp, &len, n)
Prima non funzionava perchè non leggeva la lunghezza del file. Ho messo una variabile locale nella funzione che legge la lunghezza e poi alla fine la memorizza nel puntatore da passare al main.
Grazie a tutti per l'aiuto siete stati gentilisismi.