【问题标题】:what is the pointer error in this code?这段代码中的指针错误是什么?
【发布时间】:2013-07-22 05:26:36
【问题描述】:

我正在尝试理解指针,这是我正在尝试实现的 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;
}

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

谢谢!

【问题讨论】:

标签: c string pointers


【解决方案1】:
char *s="abc", *t="ABC" ;

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

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

【讨论】:

  • 谢谢!我现在看到了问题!
  • +2 提供解决方案,-1 不解释。
  • @ElchononEdelson 我认为解释是隐含的,无论如何,完成了。
  • 解释是暗示的,但我觉得解释比暗示好。
【解决方案2】:

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

【讨论】:

  • 谢谢我现在看到问题了!
猜你喜欢
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 2014-03-06
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多