这段代码中的指针错误是什么?

DBS*_*DBS 1 c string pointers

我试图理解指针,这是我正在尝试实施的K&R程序.该程序是strcpy与KR的代码.

/*strcpy: copy t to s; pointer version 3*/
void strcpy(char *s, char *t){

while(*s++ = *t++)     
    ;              
}
Run Code Online (Sandbox Code Playgroud)

所以为了实现这个程序,我补充道

#include<stdio.h>
int main(){

    char *s="abc", *t="ABC" ;

    strcpy(s,t);
    printf("%s\n",t);

    printf("%s\n", s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到分段错误.我确信我错过了一些东西,但不太确定是什么.

谢谢!

Yu *_*Hao 8

char *s="abc", *t="ABC" ;
Run Code Online (Sandbox Code Playgroud)

字符串文字不可修改,但是,char可以修改数组,因此将其更改为:

char s[] ="abc", *t="ABC" ;
Run Code Online (Sandbox Code Playgroud)


Jon*_*oni 7

文字字符串值存储在只读存储器页面中; 他们无法修改.