C语言ACM基础 输出有问题 咋回事

img

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char a[21];char b[1001];char p1;charp2;
int T,i,j,flag,len1,len2;
scanf("%d",&T);
while(T--){
memset(a,'0',sizeof(a)) ;
memset(b,'0',sizeof(b)) ;
gets(a);
gets(b);
len1=strlen(a);
len2=strlen(b);
flag=0;
for (i=0;i<len2;++i){
if(a[1]==b[i]){
p1=&a[1];p2=&b[i];flag=1;
while(flag==1&& p1!=&a[len1]){
if(*p1!=*p2){
flag=0;
++p1;++p2;
}else{
++p1;++p2;
}
--p1;--p2;
if(flag==1){
for (j=1;j<=len1;++j){
*p2=*p1;
--p1;--p2;
}
i=i+len1-1;
}

           } 
        }
    }  
printf("%s\n",b); 
}

return 0;
}

有错误样例吗,csdn的转文字看不清楚