Può essere che non conosca i puntatori a funzione, anche se per usare qsort() non è che si debba conoscerli in dettaglio. Dare un'occhiata alla documentazione non fa comunque male:
qui
https://www.tutorialspoint.com/c_standard_library/c_function_qsort.htm
o qui
http://www.cplusplus.com/reference/cstdlib/qsort
Ad esempio, ipotizzando di usare una struttura di questo tipo...
struct Libro {
unsigned int codice;
int anno;
char titolo[64];
char autore[64];
char editore[64];
};
...si potrebbe usare una funzione di confronto come questa...
int confronta_libri_per_codice( const void *pl1, const void *pl2 ) {
unsigned int cod_a = ((struct Libro*)pl1)->codice; // "legge" il primo id
unsigned int cod_b = ((struct Libro*)pl2)->codice; // "legge" il secondo id
return cod_a==cod_b ? 0 : (cod_a<cod_b?-1:1); // confronta gli id
}
...da chiamare con...
int main() {
struct Libro libri[10]; // un array di struct Libro, con "tot" elementi
// [...]
qsort( libri, 3, sizeof(*libri), confronta_libri_per_codice );
// [...]
return 0;
}