ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode


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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

 

4.4/5 - (94 голоса)



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

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

    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

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

      1. Анастасия

        У меня та же проблема, с printf всё работает, но вот если ввести при scanf, то в выводе printf будут кракозябры

  3. Олег

    у меня получилось так:

    #include
    #include
    #include

    void main()
    {
    setlocale(LC_ALL, «Rus»);
    wprintf(L»Спасибо»);
    }

  4. Fkame

    Если кто-то пишет в NotePad++ или чём-то подобном, не забудьте поменять кодировку самого файла с UTF-8 на, например, Windows-1251.
    Спасибо за статью.

Добавить комментарий

Ваш адрес email не будет опубликован.