Originariamente inviato da Smoke666
codice:
scheda_t * new_scheda (void)   
{
 scheda_t * res=(scheda_t*)calloc(1, sizeof(scheda_t)); 
 res->autore = NULL; 
 if(res == NULL){return NULL;}
else	
return res; 
}
Non pensavo fosse significativo, scusami!
E' necessario avere tutto il quadro completo perché il problema potrebbe essere più di uno e in più parti del codice.

Il tuo è sicuramente in

strlen(s->autore->cognome)

dato che autore è NULL.

Molte parti del codice sono un po' "strane" ma non capisco proprio questa funzione

print_scheda

con il parametro FILE *f che non viene usato e in cui non si capisce cosa vorresti fare ...