Почему вот такая штука:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
#include <wchar.h>
int compare(const void * ws1, const void * ws2);
int main(void)
{
wchar_t * ws;
setlocale(LC_ALL, "");
ws = wcsdup((wchar_t *)L"аАбБкКёЁеЕфФ");
if (ws == NULL) exit(1);
qsort(ws, wcslen(ws), sizeof(wchar_t), compare);
printf ("ws=[%ls]\n", ws);
free(ws);
return 0;
}
int compare(const void * ws1, const void * ws2) {
return wcscasecmp((wchar_t *)ws1, (wchar_t *)ws2);
}
выдаёт ws=[аАбБЕекКФфЁё] вместо ws=[аАбБеЕёЁкКфФ]?
Точнее:
- почему аА, но Ее?
- почему ё унесло в самый конец?
Дистрибутив Slackware 12.1, локаль ru_RU.utf8.
P.S. Кстати, не могу понять, откуда ругань:
$ gcc -Wall ./sort.c
./sort.c: В функции ‘main’
./sort.c:18: предупреждение: implicit declaration of function ‘wcsdup’
./sort.c:18: предупреждение: assignment makes pointer from integer without a cast
./sort.c: В функции ‘compare’
./sort.c:30: предупреждение: implicit declaration of function ‘wcscasecmp’
Однако g++ -Wall ./sort.c никаких предупреждений не даёт.

Ответ на:
комментарий
от sergey_feo
Ответ на:
комментарий
от sf
Ответ на:
комментарий
от sf

Ответ на:
комментарий
от sergey_feo
Ответ на:
комментарий
от sf

Ответ на:
комментарий
от sergey_feo
Ответ на:
комментарий
от sergey_feo

Ответ на:
комментарий
от php-coder

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Warnings при использовании basename () (2004)
- Форум [c++0x]Почему в qsort можно передать незамкнутую лямбду, но нельзя замкнутую? (2010)
- Форум Не могу осилить Gettext (2017)
- Форум ncursesw: warning: implicit declaration of function ‘waddwstr’ (2011)
- Форум wsprintf - ничего не понимаю (2001)
- Форум G++ 4.7.0~, x86_64-pc-solaris2.11: conflicts with new declaration with 'C++' linkage (2011)
- Форум glib-2.22 segfault после main (2016)
- Форум compilation problem... (2002)
- Форум compilation problem... (2002)
- Форум c++ работа с UTF-8 строка (2009)