老规矩,还是先查看一下strcpy的源代码:
strcpy
char * strcpy ( char * destination, const char * source );
所以 我们很容易就能写出如下的代码:
char* mystrcpy(char* des, const char* src)
{
char* ret = des;
while (src != '\0')
{
*des = *src;
des++;
src++;
}
return ret;
}
但其实还不够好,有很多细节没有做好
比如:
1、没有判断des和src是否是空指针
2、while条件冗杂;
3、后置++可以同时在赋值时使用;
那么 在修改之后 我们就可以得到如下代码:
char* mystrcpy(char* des, const char* src)
{
char* ret = des;
assert(des != NULL);//判断是否是空指针 assert函数需要用assert.h头文件哦
assert(src != NULL);
while (*des++ = *src++)//等于\0的就结束循环的过程其实已经包含其中,后置++不会影响赋值
{
;
}
return ret;
}
最后希望我的文章能帮到你,而对于strcpy的返回值,作者其实也未有太深的了解 请见谅。