文章目录
前言
strncpy()函数也是实现字符串的拷贝,但是可以控制拷贝的长度。
一、srncpy()函数是什么?
strncpy()函数不会拷贝源头字符串sou中的‘\0’,但是如果追加的数比源头要长,多余的追加‘\0’,例如sou[]=“hello”,des[10]=“abcdefg”,
strncpy(des,sou,5)->结果是“hellofg”
strncpy(des,sou,6)->结果是“hello”
本文自我实现my_strncpy()函数
二、my_strncpy()
1.函数实现
代码如下(示例):
char* my_strncpy(char*str1, const char*str2, size_t n)
{
assert(str1&&str2);
while (n)
{
*str1++ = *str2++;
n--;
}
if (n)//如果追加的长度比源头还长,多余的追加'\0'
{
while (--n)
*str1++ = '\0';
}
return *str1;
}
总结
strncpy()函数可以实现拷贝的长度,但是不会拷贝源头字符串的‘\0’,如果追加长度比源头还长,多余的追加‘\0’。