Как включить русский язык в Си

На начальных этапах программирования многие новички сталкиваются с такой проблемой: они в коде пишут какое-либо сообщение на русском языке для консоли (например, используя printf), но при запуске программы вместо русских слов появляются какие-то непонятные знаки. Покажем, как избавиться от этой проблемы.

Например, при запуске вот этой программы:

В консоли будет отображено следующее:

Как включить русский язык в Си - vscode.ru

Всё дело в том, что мы не подключили русскую локализацию.

Исправить эту ошибку  очень легко!

Для начала надо добавить следующую библиотеку:

Она отвечает за локализацию.

А затем нам надо просто написать в начале тела кода вот эту строку:

Функция setlocale задаёт локализацию программы. По умолчанию это только английский язык.
LC_ALL указывает программе, что локализированы будут все функции.

“Rus”, как легко догадаться говорит о том, что локализация произойдёт на русский язык.

Вот и всё! Мы включили русский язык в Си. Наша программа модернизирована и обогащена на две строки. Теперь она будет выглядеть вот так:

А консоль вот так:

Как включить русский язык в Си - vscode.ru

 

Как включить русский язык в Си
4.81 (96.3%) 27 votes

Поделиться в соц. сетях:

9 комментария(ев) к статье “Как включить русский язык в Си

    1. admin

      Что именно? Какая ошибка?

      Можете попробовать такой код:

      #include < locale.h >
      #include < stdio.h >
      #include < conio.h >

      int main()
      {
      setlocale(LC_ALL, “Rus”);
      printf(“Всем привет! Как дела?”);
      getch(); //В Visual Studio _getch();
      return 0;
      }

      1. Имя

        Этот вариант работает, но он не включает русский язык в стандартном потоке ошибок.

  1. Евгений

    Вместо одних каракулей появились другие. Но никаких ошибок не выдает.

    1. admin

      Здравствуйте, Евгений. Существует ещё один способ включения русского языка в Си. Попробуйте использовать следующий код:

      #include < Windows.h >
      #include < stdio.h >
      #include < conio.h >

      int main()
      {
      SetConsoleCP(1251); //установка кодовой страницы win-cp 1251 в поток ввода
      SetConsoleOutputCP(1251); //установка кодовой страницы win-cp 1251 в поток вывода
      printf(“Всем привет! Как дела?”);
      _getch();
      return 0;
      }

  2. Анастасия

    Здравствуйте, использовала такой метод как в статье.
    Все работает при выводе текста функцией printf.
    Но, когда я считываю слово функцией scanf, а потом вывожу его функцией printf появляются снова непонятные символы.
    Подскажите пожалуйста как это можно исправить.

    1. admin

      Здравствуйте! Чуть выше в комментариях приводятся ещё два способа, как включить русский язык в Си. Попробуйте их, должно сработать.

Добавить комментарий для Руслан Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">