0

Вот код. Для элемента к, допустим, выводится код -22, но если я ввожу к в консоль, то уже к соответствует значение - 86. Как исправить эту ошибку, чтобы коды соответствовали?

#include <stdio.h>
#include <string.h>
#include <locale.h>

int main() { setlocale(LC_ALL, "RUS"); char alp[100] = "абвгдеёжзийклмнопрстуфхцчшщъыьюэя"; for (int i = 0; i < 33; i++){ printf("%c - %d\n", alp[i], (int)(alp[i])); } char str[100]; gets(str); puts(str); printf("%d", (int)(str[0])); }

****

  • В винде у вас кодировка в программе cp1251, а в вводе-выводе консоли cp866 (однако, если вызвать программу из консоли и передать ей аргументы командной строки (argv[] в main), то эти строки будут в cp1251) (вот такие чудеса от Б. Гейтса) (дальше думайте сами стоит ли вам вообще учиться в ней программить) – avp Oct 14 '23 at 20:26
  • @avp если бы в выводе была cp866, тогда вместо алфавита вывелись бы кракозябры – andreymal Oct 14 '23 at 20:27
  • @andreymal, а они и вывелись бы, просто setlocale(LC_ALL, "RUS"); это частично исправляет. – wololo Oct 14 '23 at 20:31
  • Небольшой оффтоп: буквы нумеруются положительными числами, так лучше бы использовать беззнаковые – Alexey Ten Oct 15 '23 at 03:11

0 Answers0