Определение национального символа в wchar_t - C (СИ)
Формулировка задачи:
Собственно в шапке всё.
Есть iswalpha(), но, судя по стандарту работает только с символами из локали "C" (фактически энглиш-онли). Пролазил по wchar.h ничего более путного не нашел.
Писать своё универсальное нереально - только для того языка, который знаешь сам, а как быть с символами, к примеру арабскими, ведь обработка текста будет зависеть от локали, и универсальное не накорябать(ну нереально это одному человеку)
Решение задачи: «Определение национального символа в wchar_t»
textual
Листинг программы
[faust@archlinux РАзная всячина]$ cat 3.c #include <stdio.h> #include <stdlib.h> #include <wchar.h> #include <wctype.h> #include <locale.h> int main() { setlocale(LC_ALL,""); printf("\nCurrent locale is %s\n",setlocale(LC_ALL,NULL)); printf("symbol 'W', iswalpha(L'W') = %d\nsymbol 'Б', iswalpha(L'Б') = %d\nsymbol '1', iswalpha(L'1') = %d\n",iswalpha(L'W'),iswalpha(L'Б'),iswalpha(L'1')); return 0;}[faust@archlinux РАзная всячина]$ gcc -std=c89 3.c [faust@archlinux РАзная всячина]$ ./a.out Current locale is ru_RU.UTF-8 symbol 'W', iswalpha(L'W') = 1024 symbol 'Б', iswalpha(L'Б') = 1 symbol '1', iswalpha(L'1') = 0 [faust@archlinux РАзная всячина]$ LANG="en_US.UTF-8"; ./a.out Current locale is en_US.UTF-8 symbol 'W', iswalpha(L'W') = 1024 symbol 'Б', iswalpha(L'Б') = 1 symbol '1', iswalpha(L'1') = 0 [faust@archlinux РАзная всячина]$
Объяснение кода листинга программы
- В начале программы подключаются необходимые заголовочные файлы: stdio.h, stdlib.h, wchar.h, wctype.h, locale.h
- Затем определена функция main() - точка входа в программу
- Код устанавливает текущую локаль с помощью функции setlocale(LC_ALL,``)
- С помощью функции printf() выводится текущая локаль
- Затем с помощью функции iswalpha() проверяется является ли символ в заданной локали буквой
- Выводится значение функции iswalpha() для символов 'W', 'Б', '1'
- Программа возвращает 0, заканчивая свою работу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д