Ecco:
codice:
int qsort_cmp_func (const void *s1, const void *s2)
{
return strcmp ((char*) s1, (char*) s2);
}
int main (void)
{
char m[10][10]= { "pippo", "cicci", "paperino" };
int i;
qsort (m, 3, 10, qsort_cmp_func);
for (i=0; i<3; i++)
printf ("%s\n", m[i]);
return 0;
}
La funzione qsort è stata sviluppata per ordinare array con l'algoritmo "quick-sort". Per come è stata implementata:
A) Non sa a priori su quale tipo di dato dovrà operare
B) Non sa a priori su quanti elementi dovrà operare
C) Non sa a priori la dimensione di un singolo elemento
Tutti questi dati infatti vengono forniti alla funzione qsort. L'unica cosa che "sa" è questa: in base all'algoritmo quick-sort dovrà chiamare ogni volta la funzione di comparazione e in base al risultato di questa comparazione, dovrà scambiare (oppure no) i 2 elementi.
Nel caso sopra, deve quindi sapere che ogni elemento è lungo 10 byte!!