Давайте проанализируем, что происходит с вашим кодом, например, для первой буквы «М».
Я заменю это в вашей первой строке кода. Кстати, я предполагаю, что keyText
содержит повторение вашего ключевого слова столько раз, сколько необходимо для того, чтобы содержать такое же количество символов, как в вашем примере: KAIJGKAIJGKAIJGKA...
.
encryptedtext[i] = ((text[i] + keytext[i]) % alphabetlength) + 'A' + 1;
Это будет выглядеть примерно так:
encryptedtext[i] = (('M' + 'K')% 25) + 'A' + 1
Заменив значения на таблицу ascii , вы получите:
encryptedtext[i] = ((77 + 75)% 25) + 65 + 1
, что означает encryptedtext[i] = 67
Что действительно является C.
В итоге : ASCII имеет таблицу алфавита из 26 символов, которая, возможно, нетакой же, как ваш alphabetlength
.Создайте свою собственную карту алфавита, не полагайтесь на переводы с ASCII на int, это просто напрашивается на неприятности.