使用 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 来阅读。
所以我正在尝试将 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 来阅读。