Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 03:59   #1
pronaks
 
Регистрация: 18.11.2010
Сообщений: 9
По умолчанию Считывание русских символов из консоли

Задача наверное заезженная но тем не менее я не нашел рабочих вариантов. И так нужно считать русские символы из консоли, как это можно реализовать?
pronaks вне форума Ответить с цитированием
Старый 19.12.2011, 01:12   #2
_J_
Пользователь
 
Аватар для _J_
 
Регистрация: 02.12.2011
Сообщений: 13
По умолчанию

setlocale (LC_CTYPE, "Russian");
_J_ вне форума Ответить с цитированием
Старый 05.01.2012, 22:24   #3
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Столкнулся с такой же проблемой. Ввожу в терминале слово, а получаю его слегка искаженным.

Коды символов отличаются на 64d (память2 - строка s, память1 - строка s2):


Код:
#include <stdio.h>
#include <locale.h>

#define STRSIZE 20

int main ()
{
    char* s = "Привет";
    char s2[STRSIZE];

    setlocale(LC_ALL, "Russian");

    scanf("%s", s2);

    return 0;
}
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2012, 22:37   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

судя по всему setlocale ничего не сделала.
первое в кодировке W-1251, второе в D-866.

попробуйте апишные SetConsoleCP
SetConsoleOutputCP.
еще можно перевести сорец в 866 попробовать(или только символы)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2012, 22:47   #5
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Пепел Феникса, не могли бы вы пояснить:
Цитата:
еще можно перевести сорец в 866 попробовать(или только символы)
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2012, 22:48   #6
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

Код:
	
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
CaHb4ec вне форума Ответить с цитированием
Старый 05.01.2012, 23:04   #7
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

С функцией SetConsoleCP(1251); корректно считывается строка, но вывод функцией printf() некорректен.

Если вставить SetConsoleOutputCP(1251); то невозможно ввести кириллицу в терминал.
8Observer8 вне форума Ответить с цитированием
Старый 05.01.2012, 23:06   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

их надо обе использовать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.01.2012, 23:06   #9
CaHb4ec
Пользователь
 
Регистрация: 02.01.2012
Сообщений: 25
По умолчанию

оставьте эти строчки + попробуйте поменять шрифт в консоли на Lucid Console
CaHb4ec вне форума Ответить с цитированием
Старый 05.01.2012, 23:13   #10
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Заработало! Спасибо, парни! +1 Вам
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод русских символов из MSSQL DimaKGD PHP 8 06.06.2015 10:09
Кодировка русских символов Dеlphi Общие вопросы Delphi 6 26.07.2011 08:39
UnicodeString - кодирование русских символов. Freeman C++ Builder 3 15.06.2011 03:32
Считывание строки из консоли СИ с использованием getchar() vedro-compota Общие вопросы C/C++ 11 17.12.2010 12:19
Ввод и вывод русских букв в консоли sde C++ Builder 10 20.05.2010 03:02