qsort(words, size1, size2, compareWords);
en el interior compara palabras:
int compareWords(const void *ac, const void *bc)
esto funciona:
char const *a = *(const char **)ac;
estos no ( a
obtiene algunos valores de basura):
char const *a = ac; char const *a = (const char *) ac;
¿Cuál es la razón?
Además, en algunos ejemplos, veo size2
como sizeof(char *)
. ¿No debería esto ser sizeof(*words)
?
las palabras se declaran como: char *words[] = {"abc", "pqr", "abcd", "pqsl"};
Cuando se qsort
una matriz de T, su función de comparación debe convertir sus punteros const void*
en const T*
, porque T no puede tomarse por valor.
Si las words
son una matriz de char*
o char const *
, tiene que convertir los argumentos a char* const *
o char const * const *
respectivamente, es natural cuando se dice de esta manera.