LINUX.ORG.RU

qsort


0

0
Обругаете, наверное чайником :) Отсортировал массив русских строк, подготовленных в win-1251 и получил вовсе не по алфавиту. Наверное, нужно где-то сказать, что это-1251, или перекодировать в koi8r перед сортировкой самому, а как не знаю. Подскажите пож-ста.
anonymous
Напиши, как вызывал, ф-цию compar, описание массива base
anonymous
()
char **list; int sortproc(const void *p1, const void *p2) { return strcmp((char *)p1, (char *)p2); } ... qsort(list, nlist, sizeof(char *), sortproc); ...
anonymous
()
p1 и p2 это указатели на строки. Поэтому вызывай strcmp(*(char**)p1,*(char**)p2) В win1251 русские буквы по алфавиту, должно сработать, а в koi8r нет.
anonymous
()
Функция strcmp работает по разному в зависимости от glibc-шной локали.
setlocale()...
Banshee
()
Спасибо. Приятно получать дельные ответы.
anonymous
()
Какие нафиг дельные советы,... strcmp() работает без учета локали,
с учетом локали работает strcoll().

--w
Автор локали в uclibc.
vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.