Русский язык в ввода-выводе через 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");

Объяснение кода листинга программы

  1. Устанавливается локальная настройка для использования русского языка (LC_ALL) с помощью функции setlocale.
  2. Выводится приглашение для ввода имени с помощью функции puts.
  3. Устанавливается кодировка консоли в 1251 с помощью функции SetConsoleCP.
  4. Вводится имя с помощью функции gets, которую следует использовать с осторожностью из-за потенциальных уязвимостей буферной переполненией.
  5. Устанавливается кодировка консоли в 866 с помощью функции SetConsoleCP.
  6. Очищается консоль с помощью функции system и команды cls.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5
Похожие ответы