Caesar Cipher使用char*?C++

Jef*_*err -3 c++ encryption char-pointer caesar-cipher

所以我想尝试使用Ceasar Cipher char *,我写了一个简单的函数:

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

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

    return c;
} 
Run Code Online (Sandbox Code Playgroud)

这似乎看起来应该有效,但事实并非如此.它在运行程序时抛出错误.

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

int main()
{
    cout << Encrypt("hello", 2) << endl;
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在你说"为什么不只是使用string?"之前,答案是我在某个SDK上编写C++,在使用时会导致编译器错误string.好的但是,任何形式的帮助都将非常感谢,谢谢!

Som*_*ude 6

字符串文字"Hello"只读的.如果您尝试修改此类字符串,则会出现未定义的行为.

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

使用char*访问字符串文字应该让你的编译器向你尖叫警告.如果不是,您需要调高警告级别或启用更多警告.

如果你真的用C++编程,我建议你学习std::string找到一本好的初学者书来阅读.