更改字符串字符时的分段错误(核心转储)

为什么更改字符串字符会导致分段错误(核心转储):

char *str = "string"; str[0] = 'S'; //segmentation fault(core dumped) 

解决方案很简单,而是以下面的方式声明您的字符串

  char str[] = "string"; 

你应该这样做的原因是因为未定义的行为 。 使用指针创建字符串将使您的字符串位于read only内存部分,因此您无法修改它,而另一种方法也将在字符串上复制您的字符串。 还要检查C中char s []和char * s之间的区别是什么?

char *str = "string"; 指向内存的只读部分, 因此无法更改字符串。

如果要像这样更改数组,则需要声明一个数组而不是指向 数组指针

 char str[] = "string";