为什么更改字符串字符会导致分段错误(核心转储):
char *str = "string";
str[0] = 'S'; //segmentation fault(core dumped)
答案 0 :(得分:3)
解决方案很简单,请按以下方式声明字符串
char str[] = "string";
你应该这样做是因为Undefined behavior。使用指针创建一个字符串将使您的字符串位于read only
内存部分,因此您无法修改它,而另一种方法也会在字符串上复制您的字符串。另请检查What is the difference between char s[] and char *s in C?
答案 1 :(得分:2)
char *str = "string";
指向只读部分内存,因此字符串无法更改。
如果要像这样更改数组,则需要声明数组而不是指向数组的指针
char str[] = "string";