C语言关于strcpy函数的使用

2025-03-17 15:59:18
推荐回答(2个)
回答1:

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

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

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

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

回答2:

你这里声明的name是指针数组,存放的两个分别指针,分别指向的常量区"abc", "efg",改变常量区的值就会出错,可以把声明改一下,比如改为char name[2][10] = {"abc","efg"};这样就可以了。