C语言求问.关于strcat的应用

#include<stdio.h>
#include<string.h>
main()
{ char *p1=”abc”,*p2=”ABC”,str[50]=”xyz”;
strcpy(str+3,p2);
strcat(str+2,p1);
printf(“%s/n”,str);
}
A xyzabcABC B zabcABC C yzabcABC D xyzABCabc
答案是D 我的疑问是strcat(str+2,p1);
这句话,上面执行后应该是xyzABC 。那么执行那句话以后应该是xyzabcABC 才对呀
求高手解答
strcat 不关心从哪里开始。
它的第一个参数只是提供一个地址,然后从这个地址开始寻找,直到它找到一个'/0'。
然后它把它第二个参数指向的字符串粘贴到'/0'的位置,然后再在这个字符串后边添加一个'/0'。
也就是说,不论你执行
strcat(str+2,p1);
还是strcat(str+3,p1);strcat(str,p1);
结果都是一样的
呵呵,百度知道里看到的东东。