char * strncpy ( char * destination, const char * source, size_t num );
strncpy函数是C语言中的内置函数之一,相较于strcpy函数,他使用更加灵活,功能更加强大。
strncpy共有三个参数,分别是字符串目的地,字符串源头,以及选择copy的字符数目
strncpy情况与strcpy基本保持一致,但源头数据长度与copy字符的数目会产生一些问题:
当字符串源头的长度大于等于copy数目时,根据字符数目照常复制即可;
当字符串源头的长度小于copy的数目时,剩下几个copy数目,就在字符串目的地后加几个‘\0'。
下图为两种情况的演示:


模拟实现:
基于上面说到的strncpy两种情况,进行函数的模拟实现:
char* my_strncpy(char* dest, const char* src, int num)
{
char* tmp = dest;
while (num && (*dest++ = *src++))
{
num--;
}
if (num)
{
while (num--)
{
*dest++ = '\0';
}
}
return tmp;
}
int main()
{
int num = 0;
char arr1[10] = { '\0' };
char arr2[10] = { '\0' };
printf("input the dest:>\n");
gets(arr1);
printf("input the scr:>\n");
gets(arr2);
printf("input the copy num:>");
scanf("%d", &num);
char* ret = my_strncpy(arr1, arr2, num);
printf("%s\n", ret);
}
本文详细介绍了C语言内置函数strncpy的使用,对比了它与strcpy的区别。strncpy函数允许指定要复制的字符数,提高了灵活性。文章通过示例展示了当源字符串长度大于等于或小于指定复制数时的不同处理方式,并提供了模拟实现strncpy功能的代码。在main函数中,演示了如何使用自定义的my_strncpy函数进行字符串复制。
6609

被折叠的 条评论
为什么被折叠?



