-3

所以我尝试使用带有char *'s 的 Ceasar Cipher,我写了一个简单的函数,如下所示:

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

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

    return c;
} 

看起来它应该可以工作,但事实并非如此。运行程序时会抛出错误。

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

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

在你说“为什么不直接使用string?”之前,答案是我在某个 SDK 上编写 C++,使用string. 好的,但是是的,任何形式的帮助都将不胜感激,谢谢!

4

1 回答 1

6

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

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

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

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

于 2016-07-15T19:32:50.937 回答