strcpy在拷贝字符串时要拷贝‘/0’所也dst的长度不能小于str。但在拷贝时‘/0’拷不进去,所以只能在外部赋‘/0’(*dst = *src)。拷贝字符串前要先判断字符串是否为空,所以要用到assert(断言)去进行判断。
第一种形式:
int my_strcpy(char *dst, const char *src)
{
char *ret = dst;
assert(dst != NULL);
assert(src != NULL);
while (*src != 0)
{
*dst = *src;
dst++;
src++;
}
*dst = *src;
return 0;
}
第二种形式:
与第一种含义相同,但这种表述更加干净。
int my_strcpy(char *dst, const char *src)
{
char *ret = dst;
assert(dst != NULL);
assert(src != NULL);
while (*dest++ = *src++)
{
;
}
return ret;
}