У меня следующий вопрос: Моя функция сравнения в QSort выглядит следующим образом:QSort в C: сравнить Струны
static int compare(const void *arg1, const void *arg2) {
return strcmp((const char *) arg1, (const char *) arg2);
}
Это не сработало, так что я посмотрел пример кода на странице человека, и я изменил это немного, так что теперь это выглядит следующим образом:
static int compare(const void *arg1, const void *arg2) {
return strcmp(*(char * const *) arg1, *(char * const *) arg2);
}
Я не понимаю, почему метод страницы человек работает, так как параметр STRCMP являются Const символ * s1 и Const символ * s2.
Я довольно новичок в C, поэтому мне трудно понять это. Может кто-нибудь, пожалуйста, объясните мне это, почему работает только метод страниц.
Просьба найти дубликаты - ответы на многие подобные вопросы уже заданы. Параметры включают (в порядке очередности): [SO 14993282] (http://stackoverflow.com/questions/14993282/), [SO 5035289] (http://stackoverflow.com/questions/5035289/), [SO 18400333] (http://stackoverflow.com/questions/18400333/), [SO 19558447] (http://stackoverflow.com/questions/19558447/). Я уверен, что есть и другие. Попробуйте выполнить поиск с помощью '[c] qsort string' в окне поиска SO. –