ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
9 июля
307455 Топик полностью
fk0, легенда (14.02.2012 11:08, просмотров: 68) ответил fk0 на Всё гораздо хуже. Теперь-то понятно, чем настоящие поделки финских студентов отличаются от нормального ПО? Носятся с выпученными глазами -- Python! Окромя питона ничего не видели. И не надо валить с больной головы на здоровую. В Unicode нет
Вдогонку. Что характерно в perl, не работает без костылей из use utf8. Вот такие они студенческие поделки. Что самое смешное, чтоб писать нормально, без казусов, ничего сверхестесственного не нужно. Все стандартные средства работают без проблем: 
$ ./a.out 
original: Питон -- ПОДЕЛКА студентов!
lower: питон -- поделка студентов!
lower: ПИТОН -- ПОДЕЛКА СТУДЕНТОВ!
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <wchar.h> #include <wctype.h> wchar_t *modify(wchar_t *wstr, wint_t (*func)(wint_t wc)) { int i; wchar_t *r=wcsdup(wstr); if (!r) return NULL; for (i=0; i<wcslen(wstr); i++) r[i]=func(wstr[i]); return r; } wchar_t *lower(wchar_t *wstr) { return modify(wstr, towlower); } wchar_t *upper(wchar_t *wstr) { return modify(wstr, towupper); } int main(int argc, char *argv[]) { wchar_t *s, *t; setlocale(LC_ALL, ""); if (argc <= 1) s=L" -- !"; else { size_t n; s=malloc((n=mbstowcs(NULL, argv[1], 0)+1, n)*sizeof(wchar_t)); if (!s) perror(""), exit(1); mbstowcs(s, argv[1], n); } printf("original: %ls\n", s); printf("lower: %ls\n", (t=lower(s), t)), free(t); printf("lower: %ls\n", (t=upper(s), t)), free(t); return 0; }
[ZX]