C 字符串分配seg错误-为什么会发生这种情况?

C 字符串分配seg错误-为什么会发生这种情况?,c,segmentation-fault,reverse,C,Segmentation Fault,Reverse,可能重复: /*在位反转字符串 */ #进口 无效反向(char*str); int main() { char*string=“这是一个字符串。”; printf(“%s\n”,字符串); 反向(字符串); printf(“%s\n”,字符串); } 无效反向(字符*str) { char*start=str; char*end=str; 如果(0==*str) 返回; //找到终点 对于(;0!=*(++end);); 结束--; 做 { *结束=*结束^*开始; *开始=*结束^*

可能重复:

/*在位反转字符串
*/
#进口
无效反向(char*str);
int main()
{
char*string=“这是一个字符串。”;
printf(“%s\n”,字符串);
反向(字符串);
printf(“%s\n”,字符串);
}
无效反向(字符*str)
{   
char*start=str;
char*end=str;
如果(0==*str)
返回;
//找到终点
对于(;0!=*(++end););
结束--;
做
{
*结束=*结束^*开始;
*开始=*结束^*开始;
*结束=*结束^*开始;
}而(++开始<--结束);
}

我不知道为什么这个seg会出故障。是因为我正在用常量字符串初始化char*?

您正在尝试修改字符串常量。替换:

char * string = "This is a string.";


为了弥补这一点。

这在问题中被广泛地涵盖了,这是重复的。该死,我知道这是那样愚蠢的事情。
char * string = "This is a string.";
char string[] = "This is a string.";