以下程序运行的结果是什么?有解释更好

#include<stdio.h>

#include<string.h>

main()

{    char a[10]="abc",b[10]="012",c[10]="xyz";

     strcpy(a+1,b+2);

     puts(strcat(a,c+1));

}

答案:a2yz
解析:
strcpy(x,y)是指将y的字符拷贝进x中
strcpy(a+1,b+2); a+1是指从第2个字符开始拷贝,拷贝的内容是:从b的第3个字符开始拷贝,也就是将2 \0拷贝进去
所以这句结束之后a中的内容变成了a 2 \0
strcat是一个字符串追加函数,在a的后面追加c这个字符串。
puts(strcat(a,c+1)); 也就是在a 2 后面追加yz
所以最终答案是a2yz