Вопрос Я только учусь программировать на С в codeblocks. Вылезают буквы в консоли

Регистрация
27 Мар 2013
Сообщения
75
Репутация
-2
Спасибо
1
Монет
0
Я пропустила занятие по причине больницы.решила дома попрактиковаться, переписать программы, что делали одногруппники на парах. Вылазиют странные буквы в консоли. Помогите! Как это исправить?
875a8375f91de049494d6073098e8a2f_2f5c2a8862d839f47b79e65bc0b2d56b.jpg

875a8375f91de049494d6073098e8a2f_99bdb16f9b51726894848a2d5c355fc8.jpg

 
setlocale в некоторых средах не дает эффекта.
Используйте заголовок <Windows.h> и функции для работы с консолью:
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
А зачем строчку закомментировали? setlocale(LC_ALL, ""). Оно кириллицу в консоли включает. "rus" вроде можно не писать.
 
Самый простой способ: не используй русские буквы в литералах (и не-ascii символы в принципе)

Есть много способов бороться с проблемой несовпадения кодировок в исходном коде и в терминале, но все они являются грязными полузадокументированными костылями, призванными как-то обойти тот факт, что винда в 2022 году всё ещё использует однобайтовые кодировки, причём разные в терминале и в остальной системе. Сам язык тоже добавляет масла в огонь, любезно оставляя проблему обработки не-ascii символов в исходнике на усмотрение авторов компилятора, поэтому некоторые костыли, работающие в MSVC (visual studio), не сработают в MinGW (codeblocks), и наоборот.
Если нет веской причины, лучше вообще в это гавнище не лезть, язык это выучить не поможет, а настроение испортит, а если есть, легко можно найти кучу васянских решений в самых разных комбинациях по запросу "c++ windows кракозябры" (setlocale, SetConsoleCPOutput, wchar, ...) - авось какое-нибудь зафурычит

В языках, не тащащих за собой гору всякого вонючего легаси (Python 3, Rust, Golang, ...) всё сделано куда проще и правильнее: не UTF-8? - на мороз нах!
 
Назад
Сверху