输入一个长度不大于30的字符串,将此字符串中从第m个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针方法处理字符串。输出行末无多余空格

//问题在代码最后面
#include<stdio.h>
#include<string.h>
int copy(char *p1,char *p2,int m);
int main()
{
char str1[30],str2[30];
gets(str1);
int m;
scanf("%d",&m);
if(strlen(str1)>m)
{
copy(str1,str2,m);
printf("%s",str2);
}
return 0;
}
int copy(char *p1,char *p2,int m)
{
int n;
n=0;
for(n=0;n<m-1;n++)
{
p1++;
}
while(*p1!='\0')
{
*p2=*p1;
p1++;
p2++;
}
p2='\0';
}
/我想问一下为什么最后要加一个p='\0';呢?(不加上去不对)这有什么用呢?谢谢回答
/

,,,,。是字符串结束符