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

Correct way to use strcpy() function?

strcpy()函数的正确使用方法是什么?我用两种方法完成了,两次程序都运行良好,所以我想知道 "more correct" 使用它的方法是什么。我想将字符串 s2 复制到 s1。

这个:

s1=strcpy(s1, s2);  

或者只写:

strcpy(s1, s2);

函数签名是:

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

return 值为 destination。如果你想使用那个值你可以,否则你可以忽略它。

这是针对您想要 return strcpy(x,y) 而不必事后显式 return x 的情况。

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

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

strcpy(s1, s2);
s1 = s1;

第二个作业显然毫无意义。如果 s1 是数组而不是指针变量,它将无效,因为您不能分配给数组。