使用 char * 的凯撒密码? C++

Caesar Cipher using char * ? c++

所以我正在尝试将 Ceasar 密码与 char * 一起使用,我编写了一个简单的函数,如下所示:

char * Encrypt(char * s, int k)
{
    char * c = s;

    for(int i = 0; i < strlen(s); i++)
       c[i] += k;

    return c;
} 

这看起来应该有效,但实际上无效。 运行 program.

时抛出错误

这是我如何调用此函数的示例:

int main()
{
    cout << Encrypt("hello", 2) << endl;
    system("pause");
    return 0;
}

在你说 "why not just use string?" 之前,答案是我在某个 SDK 上编写 C++,在使用 string 时会导致编译器错误。好的,但是是的,我们将不胜感激任何形式的帮助,谢谢!

"Hello" 这样的字符串文字 只读 。如果您尝试修改这样的字符串,您将遇到 未定义的行为

在 C++ 中,字符串文字实际上是 常量 个字符的数组。

使用 char* 访问字符串文字应该让您的编译器向您发出警告。如果不是,您需要提高警告级别或启用更多警告。

如果你真的用 C++ 编程,我建议你学习 std::string and find a good beginners book 来阅读。