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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2015, 05:55   #1
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию %ls и %lc в printf и scanf

Здравствуйте.

Код:
wchar_t c;
wchar_t str[5];

c = _getwch(); // считывает символ правильно. Проверял, коды совпадают c unicode:
// а - 1072
// б - 1073
// в - 1074
printf("%lc",c); // некорректно выводит символ, пока не установить setlocale(LC_ALL, "rus")
scanf("%ls",str); // некорректно считывает символы, коды:
// а - 160
// б - 161
// в - 162
// это OEM 866
// а если поставить setlocale(LC_ALL, "rus"), то считывает что-то совсем левое: str[0]==1038, str[1]==1118, str[2]==0
printf("%lc",L'ё'); // некорректно выводит символ, пока не установить setlocale(LC_ALL, "rus")
printf("%ls",L"абв"); // некорректно выводит символы, пока не установить setlocale(LC_ALL, "rus")
Почему так происходит?

Заранее благодарен.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 08.07.2015, 07:59   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Потому что не установлена локаль. Почитайте, что это такое. Что такое кодавая страница и чем они отличаются.
p51x вне форума Ответить с цитированием
Старый 08.07.2015, 22:30   #3
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Я уже много всего перечитал и перепробовал, но так и не смог заставить правильно отображать и считывать unicode. Единственное что, так это 2 функции:
Код:
_getwch();
_putwch();
которые всегда работают правильно, и не зависят от:
Код:
setlocale();
SetConsoleCP();
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
netbeans ждем scanf и не показывает printf morg4n Общие вопросы C/C++ 1 22.05.2013 00:17
Цикл с параметром. Ввод/вывод в стиле Си (printf, scanf) Mila_ Помощь студентам 1 12.12.2011 19:06
printf печатает последнее введеное в scanf aktec Помощь студентам 9 07.03.2011 20:41
лабораторная работа printf/scanf elenai Общие вопросы C/C++ 2 27.12.2010 10:47
лабораторная работа С++(printf/scanf) elenai Помощь студентам 0 26.12.2010 21:50