как реализовать qsort в C - PullRequest
       14

как реализовать qsort в C

2 голосов
/ 13 февраля 2010

Мне нужно реализовать qsort в C и сортировать в обратном лексикографическом порядке. Я запутался в том, как создать и вызвать функцию сравнения. Это то, что я до сих пор ..

qsort (strArr, numLines, sizeof(char*) , sort);

int sort(const void * str1, const void * str2) {
 return (-1) * strcasecmp((char*) str1, (char*) str2);
};

Eclipse говорит мне "sort" undeclared (первое использование в этой функции) "в строке qsort, но я боюсь, что это не единственная моя проблема. Любой совет?

Спасибо, Христо

Редакция ... вот так выглядит мой массив:

char **strArr = malloc(numLines * sizeof(char*));
fgets(output, 256, sourceFile);
strArr[i] = malloc(((int) strlen(output) + 1) * sizeof(char));
strcpy(strArr[i],output);

1 Ответ

6 голосов
/ 13 февраля 2010

вам нужно объявить сортировку перед использованием:

int sort(const void * str1, const void * str2);

тогда сравнение может быть:

return strcasecmp(*(char * const *)str2, *(char * const *)str1);

Как указывает @Chris Jester-Young, вы можете поменять местами аргументы, чтобы отменить сравнение.

указатели должны быть разыменованы ...

...