1

我正在尝试理解指针,这是我正在尝试实现的 K&R 中的一个程序。该程序是带有来自 KR 的代码的 strcpy。

/*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;
}

但是,当我运行它时出现分段错误。我确定我错过了一些东西,但不太确定是什么。

谢谢!

4

2 回答 2

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

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

char s[] ="abc", *t="ABC" ;
于 2013-07-22T05:29:46.780 回答
7

文字字符串值存储在只读内存页中;它们不能被修改。

于 2013-07-22T05:29:15.943 回答