c++ - 我的 cipher() 函数似乎不支持大写字母

标签 c++ c char encryption

这是我的功能:

// 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

最佳答案

尝试这样的代码:

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

关于c++ - 我的 cipher() 函数似乎不支持大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19416371/

相关文章:

c++ - g++ c++17 类模板参数推导在非常特殊的情况下不起作用

c++ - 条件 (SFINAE) 覆盖

C++读取字符中特定行之后的所有内容

c++ - 如何使用指针访问 char * 中的字符

c++ - boolean 函数不能正常工作

c++ - 使用指针时遇到问题

c++ - 来自 Vector 的 Direct3D 旋转矩阵,反之亦然

c - 调用 "getpid() == fork()"时应该返回什么

c - 使用 fgets 进行文件读取

使用 C 创建一个 tar.gz 文件