您的位置:首页 > 编程语言 > C语言/C++

C strcpy

2016-05-12 16:59 253 查看

C strcpy

头文件

string.h

函数原型

char    *strcpy(char *dst, const char *src);


返回的是第一个参数dst的拷贝。

注意事项

dst的约束

由于 dst 参数将进行修改,所以它必须是一个字符串数组或者一个指向动态分配内存的数组指针,不能是字符串常量,而且必须保证有足够的空间。代码举例:

这样是可以的

char *src = "***";
char string[10];

int main()
{
strcpy(string,src);
printf("%s\n",string); // ***
return EXIT_SUCCESS;
}


下面这样不可以,程序将无法运行。

//抛出"segmentation fault"
char *src = "***";
char *string;

int main()
{
strcpy(string,src);
printf("%s\n",string);
return EXIT_SUCCESS;
}


// 抛出 “abort”
char *src = "***";
char string[1];

int main()
{
strcpy(string,src);
printf("%s\n",string);
return EXIT_SUCCESS;
}


目标参数以前的内容将被覆盖

如果dst有其他内容,那么内容会被覆盖。代码说明下

char *src = "***";
char string[] = "123456";

int main()
{
strcpy(string,src);
printf("%s\n",string); // ***
return EXIT_SUCCESS;
}


这样的复制将触发覆盖。我们可以对比下前后string的内存布局:

之前:
{ '1', '2', '3', '4', '5', '6', NUL }


之后:
{ '*', '*', '*', NUL, '4', '5', '6', NUL }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 strcpy