更改字符串字符时的分段错误(核心转储)
为什么更改字符串字符会导致分段错误(核心转储):
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";