strcpy :是用自身的字符数组长度来判断循坏的停止条件,在一些情况下这是不安全的
strncpy:在函数拷贝的过程中,将‘\0’也拷贝出来,并且以‘\0’作为循环的终止条件,这样子就会避免程序找不到结束条件,自己崩溃的现象
//strncpy函数的模拟实现
#include<stdio.h>
#include<string.h>
#include<assert.h>
char* my_strncpy(char *des, const char *src, int count)
{
char *cp = des;
assert(src && des);
while (count && (*des++ = *src++))
{
count--;
}
if (count>0)
{
while (--count)
{
*des++ = '\0';
}
}
return cp;
}
int main()
{
char string[80] = { 0 };
int len = strlen("hello");
printf("String = %s\n", my_strncpy(string, "Hello", len));
return 0;
}