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

时间:2014-09-11 18:07:10

标签: c

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

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

2 个答案:

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