Русский язык в ввода-выводе через printf-scanf - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста...
Мне нужно к программе подключить возможность работать с русским языком, однако, мне нужно, что бы программа могла не только выводить русский текст, но и заносить русский текст в массив символов(в строку)...
Что только не пробовал уже...
setlocale(LC_ALL,"Russian")-помогает только при выводе(помогает везде, но опять же, только вывод, а при вводе-заносятся лишь вопросы, проценты, и т.д. что угодно, только не русский текст)...
setlocale(LC_ALL,"1251")-помогает только при вводе(и то, только на gets/puts)...
SetConsoleCP(1251);-лишь при вводе с клавиатуры(т.е. когда вводим-вводимые символы, отображаются нормально, но не когда, мы пытаемся их загрузить из массива символов)...
SetConsoleOutputCP(1251);-только при выводе из массива на экран, остальное-иероглифы...
Мне это нужно сделать именно в C, а не в C++(т.е. библиотеку iostream не желательно использовать)...
Подскажите пожалуйста, как мне бы это сделать для функций printf/scanf, gets/puts(и возможно ли это вообще)?
Решение задачи: «Русский язык в ввода-выводе через printf-scanf»
textual
Листинг программы
setlocale(LC_ALL, "Russian"); puts("Введите имя"); SetConsoleCP(1251); gets(MyStruct.Name); SetConsoleCP(866); system("cls");
Объяснение кода листинга программы
- Устанавливается локальная настройка для использования русского языка (LC_ALL) с помощью функции setlocale.
- Выводится приглашение для ввода имени с помощью функции puts.
- Устанавливается кодировка консоли в 1251 с помощью функции SetConsoleCP.
- Вводится имя с помощью функции gets, которую следует использовать с осторожностью из-за потенциальных уязвимостей буферной переполненией.
- Устанавливается кодировка консоли в 866 с помощью функции SetConsoleCP.
- Очищается консоль с помощью функции system и команды
cls
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д