1.函数介绍
拷贝num个字符从源字符串到目标空间。
如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个
strncpy与strcpy的作用是一样的,区别在于strncpy指定了复制字符的个数。
2.思路分析
这里多了个参数num,指定的复制字符个数,就得考虑两种情况:
1.当 源字符串长度大于num时,正常复制到num结束。
2.当源字符串长度小于num时,就得在后面追加剩余个数的‘\0’。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
//模拟实现strncpy
char* my_strncpy(char* dest, char* src, size_t num)
{char* ret = dest;assert(src);assert(dest);while (num&&(*dest++=*src++))//当*src=='\0'时会跳出循环{num--;}if (num)//经历上层循环后,剩余个数继续遍历加空字符{while (num--){(*dest++) = '\0';}}return ret;}int main()
{char str1[] = "abcdefghij";char str2[] = "aaaa";my_strncpy(str1+2, str2, 5);printf("%s\n", str1);return 0;
}