请问一下这道题错在哪里,谢谢!

题目是有一个字符串,包含个字符。写一个函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串(要用指针写)
#include
#include
int main()
{
void cpy(char *,char *,int m);
char a[100],b[100];
int m;char *p;
scanf("%d",&m);
gets(a);
cpy(a,b,m);
printf("%s",b);
return 0;
}
void cpy(char *a,char *b,int m)
{
char *p1,*p2;
p1=(a+m-1),p2=b;
for(;p1!='\0';p1++,p2++)
{
*p2=*p1;
}
*p2='\0';
}

 for(;p1!='\0';p1++,p2++)
->
for(;(*p1)!='\0';p1++,p2++)

就是楼上说的,p1是指针,你的本意是*p1,还有就是申明指针的时候最后初始化,容易出现野指针