Руссификация консоли в с - 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);
Объяснение кода листинга программы
SetConsoleCP
— функция, которая устанавливает кодировку консоли на стандартную кодировку символов Windows (CP-1251).SetConsoleOutputCP
— функция, которая устанавливает кодировку вывода на консоль на стандартную кодировку символов Windows (CP-1251).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д