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";