Sarebbe utile, per fare prima, sapere quando ti da' l'errore (quali dati inserisci ... in quale fase ....) ... magari in quale linea ...
Per inciso ... queste linee
a.Cognome[20] = s.Cognome[20];
a.Nome[20] = s.Nome[20];
a.nomeFac[20] = f.nomeFac[20];
NON copiano le stringhe, come potresti pensare ... Per fare la copia di stringhe devi usare la funzione strcpy per ogni stringa ...