正确使用strcpy()函数的方法?

时间:2018-06-11 21:28:24

标签: c strcpy

使用strcpy()函数的正确方法是什么?我已经用两种方式完成了它,两次程序都运行得很好,所以我想知道什么是“更正确”的使用方法。我想将字符串s2复制到s1。

这一个:

s1=strcpy(s1, s2);  

或者只写:

strcpy(s1, s2);

2 个答案:

答案 0 :(得分:4)

第二种方式是正确的。 strcpy()的返回值始终与其第一个参数相同,因此您的第一个版本等同于:

strcpy(s1, s2);
s1 = s1;

第二项任务显然毫无意义。如果s1是数组而不是指针变量,那么它将无效,因为您无法分配给数组。

答案 1 :(得分:2)

功能签名是:

char* strcpy(char* destination, const char* source);

返回值为destination。如果你想使用那个值,你可以忽略它。

这适用于你想return strcpy(x,y)而不必事后明确return x的情况。

请注意,像strcpy这样的函数本质上是危险的,因为它们不能正确检查缓冲区长度。你应该使用strcpy_s或类似的具有显式长度字段的东西,这样就不会产生缓冲区溢出错误。