【发布时间】:2016-07-23 05:36:44
【问题描述】:
好吧,我想做一个具有编码和解码功能的函数。 所以,我研究了“rot-13 encoding”并解决了这个问题:
char* szTemp = "Hello World";
for (int i = 0; i < strlen(szTemp); i++)
{
if (szTemp[i] >= 'a' && szTemp[i] <= 'm') szTemp[i] += 13;
else if (szTemp[i] >= 'A' && szTemp[i] <= 'M') szTemp[i] += 13;
else if (szTemp[i] >= 'n' && szTemp[i] <= 'z') szTemp[i] -= 13;
else if (szTemp[i] >= 'N' && szTemp[i] <= 'Z') szTemp[i] -= 13;
}
MessageBox(szTemp);
但它有一些错误。它是什么?谁来帮帮我!
【问题讨论】:
-
您正在尝试modify a read-only literal string。我会先解决这个问题。
char szTemp[] = "Hello, World!"; -
char* szTemp是非只读的。你只需要确保你写的内容不会超过缓冲区的大小。 -
@DexStar 指向的内存是只读的。第一行甚至不应该按照现代标准编译,但即使在黑暗时代,尝试修改字符串文字也是 UB。