codice:
void main()
{scheda_t *res=NULL;
  res = new_scheda();
  if(res==NULL){printf("non allocata scheda\n");}
  else{printf("allocata! ora la libero...\n");
  		print_scheda(stdout, res); /*stampa la scheda vuota*/
  		free_scheda(&res); /*libera la scheda*/
  		if(res!=NULL){printf("non liberata\n");}
  		else{printf("liberata!\n");}
  	  }
  printf("fine\n");

}

void print_scheda (FILE* f, scheda_t * s)
{ 
char *strcognome;
          strcognome=malloc(sizeof(strlen(s->autore->cognome)+1));
          strcognome=strncpy(strcognome, s->autore->cognome, sizeof(strlen(s->autore->cognome)+1) );
          strcognome=strcat(strcognome, STRING_NULL);
}
Alla malloc di strcognome c'è il segmentation fault...penso sia dovuto al fatto che non allochi la scheda, quindi non può recuperare la lunghezza di s->autore->cognome...