Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C] isalpha и русский алфавит 
:(
    Опции темы
APXEOLOG
Дата 10.12.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Добрый день, нужно проверить является ли символ буквой. На данный момент делаю так:
Код

#include <locale.h>
#include <stdio.h>
#include <ctype.h>

int main()
{
    printf("Установлена локаль: %s\n", setlocale(LC_ALL, "RU"));
    char input_char;
    do
    {
        input_char = getchar();
        if (isalpha(input_char))
        {
            printf("%c", input_char);
        }
    } while (input_char != EOF);
    return 0;
}


Проблема в том, что не все буквы алфавита обрабатываются. В частности вот сравнение ввода и вывода:
Код

Ввод:
абвгдеёжзийклмнопрстуфхцчшщъыьэюя

Вывод:
Установлена локаль: Russian_Russia.1251
абвгдежзийкнпрстуфхцчшъыэю

Ввод:
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

Вывод:
Установлена локаль: Russian_Russia.1251
ГЁЖИКМОРСТУФЦШЩЪЭЯ


В чем проблема? файлы имеют кодировку ANSI, подаю путем
Код

main.exe < input.txt >> output.txt


P.S. Если ввожу буквы напрямую через консоль результаты немного другие, но всё равно не все буквы определяет (кодировка консоли 1251)
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
APXEOLOG
Дата 10.12.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 12.4.2007
Где: Мурманск

Репутация: нет
Всего: 1



Проблема решена. Данный баг лечится преобразовыванием к unsigned char
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
xvr
Дата 13.12.2010, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(APXEOLOG @ 10.12.2010,  15:29)
Проблема решена. Данный баг лечится преобразовыванием к unsigned char

Данный баг лечится определением input_char как int. А 'преобразование к unsigned char' в вашей проге обрежет ваш входной файл по первой же букве 'я'

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.