Сравнение русских символов не работает - C (СИ)
Формулировка задачи:
сейчас делаю черновик для более большой программы, но не получается различать введенные символы на русском с введённой строкой. Такая вещь, как эта setlocale(LC_ALL, "RUS"); помогает только выводить уже забитые строки в коде.
Сам перевод этих символов получается(в введённой строке ( char str[64] ) после перевода висят символы), но они не те. Возможно, что не ту таблицу взял, посоветуте, кто знает)
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>
char *trans(char *str) //оператор для перевода символов в русский
{
int i = 0;
while(str[i]!='\0')
{
switch(str[i])
{
case 128:
str[i] = 'А';
break;
case 129:
str[i] = 'Б';
break;
case 130:
str[i] = 'В';
break;
case 131:
str[i] = 'Г';
break;
case 132:
str[i] = 'Д';
break;
case 133:
str[i] = 'Е';
break;
case 134:
str[i] = 'Ж';
break;
case 135:
str[i] = 'З';
break;
case 136:
str[i] = 'И';
break;
case 137:
str[i] = 'Й';
break;
case 138:
str[i] = 'К';
break;
case 139:
str[i] = 'Л';
break;
case 140:
str[i] = 'М';
break;
case 141:
str[i] = 'Н';
break;
case 142:
str[i] = 'О';
break;
case 143:
str[i] = 'П';
break;
case 144:
str[i] = 'Р';
break;
case 145:
str[i] = 'С';
break;
case 146:
str[i] = 'Т';
break;
case 147:
str[i] = 'У';
break;
case 148:
str[i] = 'Ф';
break;
case 149:
str[i] = 'Х';
break;
case 150:
str[i] = 'Ц';
break;
case 151:
str[i] = 'Ч';
break;
case 152:
str[i] = 'Ш';
break;
case 153:
str[i] = 'Щ';
break;
case 154:
str[i] = 'Ъ';
break;
case 155:
str[i] = 'Ы';
break;
case 156:
str[i] = 'Ь';
break;
case 157:
str[i] = 'Э';
break;
case 158:
str[i] = 'Ю';
break;
case 159:
str[i] = 'Я';
break;
case 224:
str[i] = 'а';
break;
case 161:
str[i] = 'б';
break;
case 162:
str[i] = 'в';
break;
case 163:
str[i] = 'г';
break;
case 228:
str[i] = 'д';
break;
case 165:
str[i] = 'е';
break;
case 166:
str[i] = 'ж';
break;
case 167:
str[i] = 'з';
break;
case 168:
str[i] = 'и';
break;
case 169:
str[i] = 'й';
break;
case 170:
str[i] = 'к';
break;
case 171:
str[i] = 'л';
break;
case 172:
str[i] = 'м';
break;
case 173:
str[i] = 'н';
break;
case 174:
str[i] = 'о';
break;
case 175:
str[i] = 'п';
break;
case 224:
str[i] = 'р';
break;
case 225:
str[i] = 'с';
break;
case 226:
str[i] = 'т';
break;
case 227:
str[i] = 'у';
break;
case 228:
str[i] = 'ф';
break;
case 229:
str[i] = 'х';
break;
case 230:
str[i] = 'ц';
break;
case 231:
str[i] = 'ч';
break;
case 232:
str[i] = 'ш';
break;
case 233:
str[i] = 'щ';
break;
case 234:
str[i] = 'ъ';
break;
case 235:
str[i] = 'ы';
break;
case 236:
str[i] = 'ь';
break;
case 237:
str[i] = 'э';
break;
case 238:
str[i] = 'ю';
break;
case 239:
str[i] = 'я';
break;
}
i++;
}
return str;
}
int main(void)
{
setlocale(LC_ALL, "RUS");
char str[64];
puts("вы новичок?");
for(int i=0;;i++)
{
gets(str);
trans(str);
if(strcmp(str, "да") == 0)
{
puts("ololo");
}
else puts(str);
}
getch();
return 0;
}Решение задачи: «Сравнение русских символов не работает»
textual
Листинг программы
SetConsoleCP(1251); SetConsoleOutputCP(1251);
Объяснение кода листинга программы
SetConsoleCP(1251);- Установка кодовой страницы консоли в Windows на UTF-8.SetConsoleOutputCP(1251);- Установка кодовой страницы вывода консоли в Windows на UTF-8.