Работа с русскими символами - C (СИ) (148074)
Формулировка задачи:
Здравствуйте. Возникла такая проблема: у меня есть функция написанная на Си, для ввода только символов английского языка. Я хочу сделать так, чтоб и русские символы могли вводиться, только буквы ессесна. Добавлял код русских букв, что-то не шло -_-Помогите, кто чем может. Или может в вижле где-то дело?
void scanfss(char mas[30])
{
char c;
int i = 0;
while (1)
{
do
{
c = _getch();
} while (!(c >= 65 && c <= 90) && !(c >= 97 && c <= 122) && !(c>='а'&&c<='я') && !(c>='А'&&c<='Я') && c != '\r' && c != '\b');
if (c != '\r' && c != '\b' && i != 30)
{
mas[i] = c;
i++;
printf("%c", c);
}
else if (c == '\b' && i != 0)
{
printf("\b \b");
i--;
}
else if (c == '\r' && i != 0)
break;
}
mas[i] = '\0';
puts("\r");
}Решение задачи: «Работа с русскими символами»
textual
Листинг программы
#include <ctype.h>
...
setlocale(LC_CTYPE, "Rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char c = _getch();
if (isalpha(c))
puts("Буква");
Объяснение кода листинга программы
- Подключение заголовочного файла
для работы с функциями классификации символов. - Установка локали на русскую с помощью функции setlocale(LC_CTYPE,
Rus). - Установка кодовой страницы консоли на 1251 с помощью функций SetConsoleCP(1251) и SetConsoleOutputCP(1251).
- Получение символа из консоли с помощью функции _getch().
- Проверка, является ли полученный символ буквой, с помощью функции isalpha().
- Вывод сообщения
Буква, если символ является буквой.