controlla intanto
codice:
  if(libreria[i].codice_identificativo>max){ 
       max=libreria[i].codice_identificativo;}  
   }
max a me ritorna un valore strano...controlla ad ogni iterazione il suo valore...
per gli altri errori spiegati meglio.