为什么更改字符串字符会导致分段错误(核心转储):
char *str = "string";
str[0] = 'S'; //segmentation fault(core dumped)
解决方案很简单,用以下方式声明你的字符串
char str[] = "string";
您应该这样做的原因是未定义的行为 http://en.wikipedia.org/wiki/Undefined_behavior。创建带有指针的字符串将使您的字符串位于read only
内存部分,因此您无法修改它,而另一种方法也会在堆栈上复制字符串。另请检查C 中 char s[] 和 char *s 有什么区别? https://stackoverflow.com/questions/1704407/what-is-the-difference-between-char-s-and-char-s-in-c
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)