char *strcpy(char *dest ,char *src)
{
assert(dest != NULL && src != NULL);
char *address = dest;
while((*address++ = *src++) != '\0')
{
NULL;
}
return dest;
}
Void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);
}
字符串 str1应该是含有结束的字符串的'\0'只有这个结束符,才能把字符串复制到目标的字符串中。
虽然string[10]是字符数组 没有结束符,但是运行是正确的。
Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I++)
{
str1[i] ='a';
}
strcpy(string, str1);
}
字符串 str1 中不能算是字符串,只能是字符数组,没有结束符'\0',所以运行是错误的。
Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}
字符串str1的长度为不含有的结束符'\0' 10 ,当str1的指针到结束符的时候,string的指针已经越界了。
所以呢,使用strcpy()的时候,应该使用目标字符串的长度大于字符串的长度