这段代码的五个亮点:
①返回值为char*,链式访问。
②给srce前加const,防止*srce在子函数中被意外修改,加强了代码的健壮性(鲁棒性)。
③使用断言,传过来的两个指针不能为NULL,避免因为这种情况程序崩溃。
④运算过程和判断条件 都放在while判断条件中,代码更加简洁
⑤先定义一个指针变量储存dest最开始的值,方便把首地址传回去。
注意: strcpy最后会把 ‘\0’ 也拷贝过去。
char *my_strcpy(char *dest, const char *srce)//①②
{
assert(dest != NULL); //③
assert(srce != NULL);
char *ret = dest; //④
while ((*dest++ = *srce++) != '\0')//⑤
{
;
}
return ret;
}
int main()
{
char s1[20] = "";
char s2[20] = "hello world!";
char *ret = strcpy(s1, s2);
printf("%s", ret);
system("pause");
return 0;
}
运行截图: