Моя функция cipher () не поддерживает прописные буквы

0

Вот моя функция:

// Helper function for cipher()
void cipherc(char& c, int key)
{
    if (isupper(c)) {
        c -= 'A';
    } else {
        c -= 'a';
    }

    c += key;
    c %= MAX_KEY;

    if (isupper(c)) {
       c += 'A';
    } else {
        c += 'a';
    }
}

Я разработал его для поддержки заглавных букв, и, хотя это будет работать. По-видимому, я понятия не имею, что я делаю. Если бы кто-то мог показать мне лучший способ сделать это или исправить это, это было бы здорово. Я хотел бы (надеюсь) сохранить функцию одинаково, принимая char& и int и возвращающую void.

Теги:
encryption
char

1 ответ

0

попробуйте код:

   char d = isupper(c) ? 'A' : 'a';
   c -= d;
   c += key;
   c %= MAX_KEY;
   c += d;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню