文字を単純にシフトする関数を作成しようとしました (次の関数の shift パラメータに応じて、左または右に)。大文字は大文字のままです。これが私のアプローチです:
char encodeCaesarCipherChar(char ch, int shift)
{
char result;
if (!isalpha(ch)) return ch;
result = ch + shift;
if (islower(ch) && result < 'a') {
result += int('z') - 1;
result -= int('a');
} else if (islower(ch) && result > 'z') {
result -= int('z');
result += int('a') - 1;
} else if (isupper(ch) && result < 'A') {
result += int('Z') - 1;
result -= int('A');
} else if (isupper(ch) && result > 'Z') {
result -= int('Z');
result += int('A') - 1;
}
return result;
}
入力文字が「s」以降の場合、この機能は正常に動作しなくなります。誰かが私のアプローチの問題を指摘してもらえますか?
前もって感謝します。