Руссификация консоли в с - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Не работает руссификация консоли в си. Как сделать вывод кирилицу?
// Функция перекодировки в кирилицу
char* rus(char* st)
{
    unsigned char* p = st; // при объявлении символов как char русские буквы
// кодируются отрицательными числами
    while( *p ){
        if(*p >= 192) // здесь русская буква
            if(*p <= 239)
                *p -= 64;
            else
                *p -= 16;
        p++;
    }
    return st;
}
int main() {
    hout = GetStdHandle(STD_OUTPUT_HANDLE); //хэндл экрана консоли
    printHome();
    printLifts();
    go();
    return 0;
}
 
void go() {
    int i = 0;
    int N;
    DWORD kl;
    isClosed2 = 1;
    isClosed1 = 1;
    //Да будут же лифты пустыми!
    for (i = 0; i < 4; i++) {
        consist2[i] = 0;
        consist1[i] = 0;
    }
    for (i = 0; i < 6; i++) {
        m2[i] = 0;
        m1[i] = 0;
    }
    //Начальное положение лифтов
    current2 = 1;
    current1 = 1;
    do {
        int j;
        COORD k;
        //Пишем надпись
        k.X = 40;
        k.Y = 8;
        char a[50];
        SetConsoleCursorPosition(hout, k);
        printf(rus(" Введите любое число до 10 "));
        scanf("%d", &N);
        //Создаем семафоры для всех этажей
        for (j = 0; j < 10; j++)
            for (i = 0; i < N + 1; i++) //создание семафора очереди
            {
                hQueue2[j][i] = CreateMutex(NULL, FALSE, NULL);
                hQueue1[j][i] = CreateMutex(NULL, FALSE, NULL);
            }
        for (i = 0; i < N; i++) //запуск нитей-"людей"
        {
            hPeoples[i] = CreateThread(NULL, 4096, Chel, NULL, 0, &kl);
            Sleep(500);
        }
 
        LiftEvent2 = CreateThread(NULL, 4096, LiftListiner, NULL, 0, &kl);
        LiftEvent1 = CreateThread(NULL, 4096, LiftListiner, NULL, 0, &kl);
        //printf("dddD!");
        getch();
    } while (N > 0); //для бесконечной работы проги
}

Решение задачи: «Руссификация консоли в с»

textual
Листинг программы
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

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

  1. SetConsoleCP — функция, которая устанавливает кодировку консоли на стандартную кодировку символов Windows (CP-1251).
  2. SetConsoleOutputCP — функция, которая устанавливает кодировку вывода на консоль на стандартную кодировку символов Windows (CP-1251).

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


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

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

13   голосов , оценка 4.385 из 5