C语言关于strcpy函数的使用

#include <stdio.h>
#include <string.h>
int main()
{
char* name[2]={"abc","efg"};
strcpy(name[0],"ABC");
printf("%s\n",name[0]);
return 0;
}
问题:为什么运行不了啊???编译通过了,但是运行不了??看了好久都不懂为什么

name[0]是一个指针,指向"abc"这个字符串常量。在C语言中,字符串常量被存储在代码段中,只可读不可修改。strcpy函数要拷贝"ABC"到name[0]指向的内存区域(即代码段的字符串常量区),那个区域不可写,所以出现错误。

如果想修改,那么不要用字符串常量而是用字符串变量。下面是修改后的代码

#include <stdio.h>
#include <string.h>
int main()
{
 char name[2][4]={"abc","efg"};
 strcpy(name[0],"ABC");
 printf("%s\n",name[0]);
 return 0;
}

这样name是一个二维数组,abc和efg都存在数组里,可以修改。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-30
你这里声明的name是指针数组,存放的两个分别指针,分别指向的常量区"abc", "efg",改变常量区的值就会出错,可以把声明改一下,比如改为char name[2][10] = {"abc","efg"};这样就可以了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网