Мне нужно реализовать qsort в C и отсортировать в обратном лексикографическом порядке. Я смущен тем, как создавать и вызывать функцию сравнения. Это то, что я до сих пор ..как реализовать qsort в C
qsort (strArr, numLines, sizeof(char*) , sort);
int sort(const void * str1, const void * str2) {
return (-1) * strcasecmp((char*) str1, (char*) str2);
};
Eclipse, говорит мне «„своего рода“Необъявленная (первое использование в этой функции)» на QSort линии, но я боюсь, что это не единственная моя проблема. Любой совет?
Спасибо, Христо
Revision ... это то, что мой массив выглядит следующим образом:
char **strArr = malloc(numLines * sizeof(char*));
fgets(output, 256, sourceFile);
strArr[i] = malloc(((int) strlen(output) + 1) * sizeof(char));
strcpy(strArr[i],output);
Если вы хотите отменить заказ, не используйте -1 раз сравнение; просто замените строки 'str1' и' str2' в вызове 'strcasecmp'. (По теме: Умножение на -1 является серьезным моментом, несмотря ни на что. Это то, что унарное отрицание.) –
Другими словами: Best: 'strcasecmp (str2, str1)'. Хорошо: '-strcasecmp (str1, str2)'. Lousy: '-1 * strcasecmp (str1, str2)'. –
haha ... спасибо за совет. Я все еще студент и учился, когда я иду. Я обязательно буду помнить об этом :) – Hristo