标准库包含了一些函数,它们以一种不同的方式处理字符串。这些函数接受一个显式的长度参数,用于限定进行复制或比较的字符数。这些函数提供了一种方便的机制,可以防止难以预料的长字符串从他们的目标数组溢出。
模拟实现strncpy
char * strncpy(char dst,const char src,size_t num)
[分析]和strcpy一样,strncpy把原字符串的字符复制到目标数组。然而,他总是正好向dst写入num 个字符。如果strlen(src)的值小于num,dst数组就用0填充到num长度,如果strlen(src)的值大于或等于num,那么只有num个字节被复制到dst中。
[注意]src和dest所指的内容区域不能重叠,且dest必须有足够的空间放置n个字符。
char *my_strncpy(char *dest,const char *src,size_t num)
{
char * ret = dest;
assert(dest);
assert(src);
while(num--)