С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Возникла такая проблема: у меня есть функция написанная на Си, для ввода только символов английского языка. Я хочу сделать так, чтоб и русские символы могли вводиться, только буквы ессесна. Добавлял код русских букв, что-то не шло -_-
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2017, 11:51
Ответы с готовыми решениями:

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

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

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

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

9
2 / 29 / 7
Регистрация: 09.11.2015
Сообщений: 165
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
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
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
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
12.05.2017, 12:46 6
Цитата Сообщение от timashenka Посмотреть сообщение
То же всё это есть(
А setlocale тогда надо убрать.
---
Или не надо, вроде и так должно работать.
0
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 12:50  [ТС] 7
Убрал, ноль результата. Может кто знает альтернативу такой функции? Чтобы пользователь кроме букв ничего не мог ввести
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
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
1516 / 927 / 257
Регистрация: 30.06.2015
Сообщений: 4,869
Записей в блоге: 54
12.05.2017, 14:57 9
Цитата Сообщение от timashenka Посмотреть сообщение
что-то не шло
Тут ещё зависит в какой среде идёт работа.
0
1 / 1 / 0
Регистрация: 27.08.2016
Сообщений: 31
12.05.2017, 17:14  [ТС] 10
Вот, просто я пытался по коду русских символов ориентироваться. Прописал в вижуалке 10, узнал код, написсал в функцию, не работало.
0
12.05.2017, 17:14
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2017, 17:14
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru