Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
1

Работа с русскими символами

12.05.2017, 11:51. Показов 1305. Ответов 9
Метки нет (Все метки)

Здравствуйте. Возникла такая проблема: у меня есть функция написанная на Си, для ввода только символов английского языка. Я хочу сделать так, чтоб и русские символы могли вводиться, только буквы ессесна. Добавлял код русских букв, что-то не шло -_-
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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");
}
Помогите, кто чем может. Или может в вижле где-то дело?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2017, 11:51
Ответы с готовыми решениями:

Работа с русскими символами
Проблема: стандартные сишные библиотечные функции работают с однобайтными кодировками. Есть...

Удалить второй элемент в списке - программа не работает с русскими символами
Скинул в блокноте шрифты не распознает русские дома. Еще не подскажете какой шрифт установить.

Работа с символами
а ) подсчитывает количество цифр в тексте ; б) выводит на экран слова , начинающиеся с согласных...

Работа с символами - СИ
Помогите написать код, пожалуйста 1.1. Для целого числа N (32 ≤ N ≤ 126) вывести...

9
0 / 27 / 7
Регистрация: 09.11.2015
Сообщений: 152
12.05.2017, 12:10 2
тут есть такая статейка
https://ru.wikipedia.org/wiki/Locale.h
в заголовок
C
1
#include <locale.h>
в тело
C
1
setlocale(LC_ALL,"Russian");
0
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 12:27  [ТС] 3
Что-то все равно не работает, у меня подключена эта библиотека и прописано setlocale
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
12.05.2017, 12:32 4
C
1
2
3
4
#include <windows.h>
...
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
1
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 12:44  [ТС] 5
То же всё это есть(
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
12.05.2017, 12:46 6
Цитата Сообщение от timashenka Посмотреть сообщение
То же всё это есть(
А setlocale тогда надо убрать.
---
Или не надо, вроде и так должно работать.
0
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 12:50  [ТС] 7
Убрал, ноль результата. Может кто знает альтернативу такой функции? Чтобы пользователь кроме букв ничего не мог ввести
0
1265 / 1023 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
12.05.2017, 14:19 8
И файл с кодом программы сохранить в кодировке cp1251. Или вместо русских букв ('я', ...) указать числовой код.

Добавлено через 1 час 24 минуты
Кстати, для проверки того, что символ является буквой, есть специальная функция isalpha:
C
1
2
3
4
5
6
7
8
9
#include <ctype.h>
...
setlocale(LC_CTYPE, "Rus");
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
char c = _getch();
if (isalpha(c))
    puts("Буква");
Для правильного отображения русских букв нужно установить шрифт терминала Lucida Console.
0
960 / 702 / 228
Регистрация: 30.06.2015
Сообщений: 3,761
Записей в блоге: 37
12.05.2017, 14:57 9
Цитата Сообщение от timashenka Посмотреть сообщение
что-то не шло
Тут ещё зависит в какой среде идёт работа.
0
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 17:14  [ТС] 10
Вот, просто я пытался по коду русских символов ориентироваться. Прописал в вижуалке 10, узнал код, написсал в функцию, не работало.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2017, 17:14

Работа с символами
Определить, являются ли все слова из потока символов словами одинаковой длины? Для упрощения...

Работа со символами в строках
Доброго времени суток уважаемые пользователи форума. Решил изучить СИ и после каждой пройденной...

Работа с русскими символами
Здравствуйте . У меня такая проблема : написал программу, которая, заменят в вводимой строке...

Неправильная работа с русскими символами
Проблема: если в пути к файлу ifstream есть русские символы - файл не находится. В качестве пути...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.