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

时间:2013-07-22 05:26:36

标签: c string pointers

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

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

while(*s++ = *t++)     
    ;              
}

为了实现这个程序,我添加了

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

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

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

    printf("%s\n", s);
    return 0;
}

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

谢谢!

2 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:7)

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