Caesar Cipher使用char *? C ++

时间:2016-07-15 19:26:18

标签: c++ encryption caesar-cipher char-pointer

所以我试图将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;
} 

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

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

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

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

1 个答案:

答案 0 :(得分:6)

"Hello"之类的字符串文字是只读。如果您尝试修改此类字符串,则会有未定义的行为

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

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

如果您真的使用C ++进行编程,我建议您了解要阅读的std::stringfind a good beginners book