Я пытаюсь написать функцию, в которой я сортирую указатели внутри wptrs
, массива указателей на строки в другом массиве. Я призываю себя не использовать string.h для этого упражнения, так как я хочу понять, как алгоритм сортировки может работать в C. Однако я использую qsort()
, но я пытаюсь написать для него функцию сравнения с именем mycharptrcompare()
.
Я посмотрел, как работает strcmp()
, и я попытался имитировать это с помощью mycharptrcompare()
. Однако я заметил разницу в том, что strcmp()
ожидает символ *, а функция mycharptrcompare()
ожидает символ **. Я написал метод под названием dumpwptrs
, чтобы показать мне содержимое и то, как они организованы в wptrs
. Пока у меня есть следующий код:
UPDATE
Я также пробовал:
int mycharptrcompare(const void *a, const void *b)
{
//Need to convert a void * to a more specific type to dereference
const char *aPtr = a;
const char *bPtr = b;
const char **pa = &aPtr;
const char **pb = &bPtr;
while (*pa && *pa == *pb) {
pa++;
pb++;
}
return *pa - *pb;
}
и мой вывод был:
(нуль)
перескакивает
мир
есть
собака
синий
Что по-прежнему неверно, поскольку мой список должен быть отсортирован в алфавитном порядке, а первый ввод (слово «привет») не был прочитан.