我们先了解一下这个函数,
1.假如我们要拷贝10个数,但是arr2里面没有10个数,然后多余的数全部拷贝'\0'
2.假如arr2里面有5个数,但是我们只想拷贝3个数,这个函数只会拷贝3个,不会在后面加'\0'
cpp
char* my_strcpy(char* str1, const char* str2, size_t k)
{
assert(str1 && str2);
char* str = str1;
while (k && (*str1++ = *str2++))//k--然后str1进行赋值
{
k--;
}
while (--k)这里是假如我们要拷贝10个数,但是str2里面没有10个数,然后多余的数全部拷贝'\0'
{
*str1++ = '\0';
}
return str;
}
int main()
{
char arr1[20] = "xxxxxxxxxxxxxx";
char arr2[] = "abcd";
char* ret = my_strcpy(arr1, arr2, 10);
printf("%s", ret);
return 0;
}