Почему вот такая штука: #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)