几乎所有其他旨在将一个对象复制到另一个对象的程序或函数都使用基本约定
复制(源,目标)
即使是常见的逻辑也会得出这样的结论,即您正在将某些东西从这里复制到那里。为什么 strcpy 使用完全相反的约定?它只会使试图使用该功能的人感到困惑。strcpy 的作者在编写函数时肯定想到了这一点吗?还是 strcpy 函数早于这个现在无处不在的使用约定?
他们想匹配 memcpy 的语法。
char * strcpy ( char * destination, const char * source );
void * memcpy ( void * destination, const void * source, size_t num );
其他 C 函数也使用此命令。
一个基本的 strcpy(...) 实现将是(跳过强制转换):
char * strcpy ( char * destination, const char * source ) {
return memcpy(destination, source, strlen(source) + 1);
}