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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.