关于strcpy的问题
main()
{
char s[]="123456789";
char d[]="123";
strcpy(d,s);
printf("%s,%s",d,s);
}
运行结果为什么是123456789,56789
而
main()
{
char s[]="123456789";
char d[]="1234";
strcpy(d,s);
printf("%s,\n%s",d,s);
}
运行结果是123456789,9
[解决办法]
知道为什么吗?
在strcpy之前你可以打印S和D的值,测试结果是d=0012ff70,s=0012ff74
那也就是说 '1' '2' '3' '\0'
70 71 72 73
'1' '2' '3' '4' '5' '6' '7' '8' '9' '\0'
74 75 76 77 78 79 7a 7b 7c 7d
用你的strcpy当'4'复制给'\0'时没有问题,接下来就有问题了,相当于把56789'\0'放到74到79,
所以s指向56789'\0'
一般用strcpy之前要检测内存重叠的问题
[解决办法]