Ah ho capito e se invece di mettere
codice:
int strcmp2(const void *s1, const void *s2)	
{
   return strcmp(*(char **)s1, *(char **)s2);
}
mettessi

codice:
int strcmp2(const void *s1, const void *s2)	
{
   return strcmp(s1, s2 );
}
che cosa cambierebbe? Non ho ben capito la deferenziazione delle due stringhe s1 ed s2 e il cast ad array di stringhe con (char**).. potresti dirmi il motivo?

Grazie