Spiega quali sono i tuoi dubbi, le tue perplessità.
Ho dato un'occhiata al codice e ho trovato questo problema (forse una svista?)
struct anagrafica {
char nome [10];
int giorno ;
char mese [10];
int anno;
} dati[i] ;
forse al posto di i volevi dire n.
E poi 10 caratteri ti sembrano sufficienti per un nome???
E 10 caratteri per il mese non ti sembrano tanti, non basterebbe un intero?