(1)老规矩先了解函数strncpy
由图易知char*strncpy(char*destination, const char * source, size_t num);比函数strcpy多传入了参数num,用来限定复制的字符串的位数。效果是把*source的值按照num 的位数copy到*destination里。
(2)模拟实现strncpy
char* my_strncpy(char* dest, const char* src, size_t count)
{
char* start = dest;
while (count && (*dest++ = *src++))
{
count--;
}
if (count)
while (--count)
{
*dest++ = '\0';
}
return start;
}
int main()
{
char arr1[] = "abcdefghi";
char arr2[] = "bit";
my_strncpy(arr1, arr2, 3);
printf("%s\n", arr1);
}
对于两个数组arr1和arr2,要实现把arr2拷贝到arr1上,引入一个函数my_strncpy,传入的参数为arr1和arr2数组名以及要拷贝的字符长度,引入参数start,用while语句,并且将*src的值赋值给 *dest,然后src++,dest++,这样循环下去,直到src指向空字符.