使用strcpy()函数的正确方法是什么?我已经用两种方式完成了它,两次程序都运行得很好,所以我想知道什么是“更正确”的使用方法。我想将字符串s2复制到s1。
这一个:
s1=strcpy(s1, s2);
或者只写:
strcpy(s1, s2);
答案 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
或类似的具有显式长度字段的东西,这样就不会产生缓冲区溢出错误。