如何避免分段错误?

Ash*_*eyT 0 c segmentation-fault

代码是不言自明的,但它给我分段错误,为什么?:\

#include <stdio.h>
int main(void)
{
    char *c = "Hella";
    *(c+4) = 'o';
    printf("%s\n",c);
}
Run Code Online (Sandbox Code Playgroud)

Alo*_*ave 9

怎么避免呢?

不要修改字符串文字!

char *c = "Hella";
Run Code Online (Sandbox Code Playgroud)

声明一个指向c存储在实现定义的只读内存中的字符串文字"Hella" 的指针.
您不能修改此文字.尝试这样做会导致未定义的行为.

您很幸运,您的程序崩溃,未定义的行为并不总是导致崩溃,但可能导致您的程序以任何可能的方式表现奇怪.

你需要的是一个数组:

char c[] = "Hella";
Run Code Online (Sandbox Code Playgroud)

好读:
char a [] =?string有什么区别?和char*p =?string?;?