C++ 为什么在内存位置写入访问冲突
我有以下代码C++ 为什么在内存位置写入访问冲突,c++,string,visual-c++,c-strings,C++,String,Visual C++,C Strings,我有以下代码 1 #include <stdio.h> 2 #include <string.h> 3 4 void encryptString2(char *encryptedString) 5 { 6 7 while (*encryptedString) 8 { 9 *encryptedString = *encryptedString ^ 31; 10 printf("Encrypted Character : %c\n"
1 #include <stdio.h>
2 #include <string.h>
3
4 void encryptString2(char *encryptedString)
5 {
6
7 while (*encryptedString)
8 {
9 *encryptedString = *encryptedString ^ 31;
10 printf("Encrypted Character : %c\n", *encryptedString);
11 encryptedString++;
12 }
13}
14
15 int main(int argc, char* argv[])
16 {
17 char *inputString = "Nahid";
18 printf("Input string : %s\n", inputString);
19 encryptString2(inputString);
20 printf("Input String : %s\n", inputString);
21 }
有人能解释为什么会发生这种错误以及如何解决这个问题吗?
提前感谢。不能修改字符串文字。任何修改字符串文字的尝试都会导致未定义的行为 来自C标准6.4.5字符串文本 7未说明这些数组是否不同,前提是它们的 元素具有适当的值。如果程序试图 如果修改这样的数组,则行为未定义 而是使用字符数组。比如说
char inputString[] = "Nahid";
char inputString[]=Nahid;不要试图更改字符串文字。
char inputString[] = "Nahid";