strcpy :
从源串的开始到结尾('\0')完全拷贝到目标串地址,当src串长度大于dest串长度时,程序仍会将整个src串复制到dest区域,可是dest数组已发生溢出.(使用时需注意)
strncpy :
src串的开始拷贝n个字符到dest串地址,n大于src串长度时,遇到'\0'结束; n小于src串长度时,到第n个字符结束,但不会在dest串尾补'\0'.
strcpy函数的实现
#include<assert.h>
char *my_strcpy(char *dest, const char *src)
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while ((*dest++ = *src++) != '\0')
{
;
}
return ret ;
}
int main()
{
char dest[] = "hehehehehe";//注意
char src[] = "hello";
my_strcpy(dest, src);
printf("%s\n", dest);
return 0;
}
strncpy函数的实现
#include<stdio.h>
#include<assert.h>
char *my_strncpy(char *dest, const char *src, int count)
{
assert(dest != NULL);
assert(src != NULL);
char *ret = dest;
while (count)
{
if((*dest++ = *src++) != '\0')
{
count--;
}
}
return ret;
}
int main()
{
char dest[20] = "0";//注意
char src[] = "helloworld";
int n = 5;
my_strncpy(dest, src, n);
printf("%s\n", dest);
return 0;
}