1

Здравствуйте!

VisualStudio 2012, Service Pack 1. Данный код отображает и считывает русские буквы верно, а выводит не верно :

#include <stdio.h>
#include <locale.h>
int main()
{
    char ch;

    setlocale(LC_ALL, "rus");

    printf("Введите какой-нибудь символ. \n");
    scanf("%c", &ch);
    printf("Код символа %c равен %d \n", ch, ch);


    system("pause");

    return 0;
}

Если заменить setlocale(LC_ALL, "rus"); на setlocale(LC_ALL, "ru_RU.CP1251"); то эффект ровно обратный.

Как исправить данную ошибку?

Спасибо.

1 Answers1

0

Посмотрите вот этот пост. Я думаю, что он будет полезен, хотя, если вы указали в метках язык С, то не факт. Но в любом случае - присмотритесь.

UPD: А вообще можно попробовать сделать так, предварительно подключив хедер Windows.h:

setlocale(LC_ALL, "rus");
char ch;
int origCP = GetConsoleCP();

printf("Введите какой-нибудь символ. \n"); SetConsoleCP(1251); scanf("%s", &ch); SetConsoleCP(origCP); printf("Код символа %c равен %d \n", ch, ch);

Смысл в том, что нужно менять кодировку локали на ввод и вывод.