Intanto un paio di considerazioni ...

nLibri va azzerata all'inizio con

nLibri=0;

altrimenti il suo valore non è determinato.

In secondo luogo, non è opportuno usare la parola new come parametro degli argomenti delle funzioni perché i compilatori C++, naturalmente, non lo "digeriscono". Usa nuovoLibro o nuovo

Per ultimo, il problema mi sembra più a monte dato che non sono riuscito ad inserire neanche un libro senza avere un errore. Il problema è nell'uso del puntatore

inizio

e della prima malloc. A cosa ti serve allocare un primo elemento se non hai ancora fatto inserimenti? Quel puntatore dovrebbe essere semplicemente

Libro *inizio = NULL;