Если вы хотите, чтобы значение типа 'z' + 1
стало a
и 'z' + 2
стало b
и т. Д., Вы можете изменить это:
if(c > 'z')
{
continue;
}
на что-то вроде:
if(c > 'z')
{
c = c - 'z' + 'a' - 1;
}
Кстати: ваш код не обрабатывает переполнения, поэтому он не будет работать для любого значения key
.Маленькие значения ключа будут хороши, но некоторые более высокие значения ключа вызовут проблемы.Рассмотрим этот код:
#include <stdio.h>
int main(void) {
char c = 'z';
int key = 6;
c = c + key;
if ('c' > 'z')
{
printf("Greater than z\n");
}
else
{
printf("Less than z or equal to z\n");
}
int x = c;
printf("%d\n", x);
return 0;
}
На некоторых платформах (например, https://ideone.com/2LOvCU) это может дать вывод
Less than z or equal to z
-128
, который, я думаю, не тот, который вы хотите. Может быть, вывместо этого следует хранить все вычисления в целочисленном типе (без знака).