Originariamente inviato da Metalmino
Chiarissimo, però ancora non mi è chiara una cosa.
A cosa serve la funzione strcat?
Non è la prima volta che vedo un'istruzione del genere. Credo che nel mondo si sia affermata tra alcune persone la strana convinzione che, così facendo, si garantisca che la stringa sia null-terminated. In realtà la documentazione della strcat() parla chiaro:

The strcat() function appends the src string to the dest string, overwriting the null byte ('\0') at the end of dest, and then adds a terminating null byte.
il che significa che questa cosa funziona solo se la stringa di destinazione ha già il terminatore, al più poi dopo ne aggiunge un altro (tra l'altro bisognerebbe assicurarsi che vi sia abbastanza spazio per farlo). In conclusione, è un'istruzione inutile.

Originariamente inviato da Metalmino
E come mai per leggere l'intero dopo l'ISBN ha scritto "\n;%d"? Cioè non mi è chiaro come riconosce solo l'intero con quel comando. Grazie in anticipo.
Ti conviene leggere più a fondo la documentazione della scanf() (e le altre della stessa famiglia) per comprenderlo. La stringa di formato deve "matchare" l'input. In quel caso la scanf() si attenderà un eventuale '\n' seguito poi da un ; e da un intero che va salvato nell'apposita variabile passata come argomento. E' esattamente il formato del tuo input subito dopo lo ISBN: c'è un ; e poi un numero intero.