Определение национального символа в 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 РАзная всячина]$

Объяснение кода листинга программы

  1. В начале программы подключаются необходимые заголовочные файлы: stdio.h, stdlib.h, wchar.h, wctype.h, locale.h
  2. Затем определена функция main() - точка входа в программу
  3. Код устанавливает текущую локаль с помощью функции setlocale(LC_ALL,``)
  4. С помощью функции printf() выводится текущая локаль
  5. Затем с помощью функции iswalpha() проверяется является ли символ в заданной локали буквой
  6. Выводится значение функции iswalpha() для символов 'W', 'Б', '1'
  7. Программа возвращает 0, заканчивая свою работу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы