用指针实现两个字符连接,并将链接后的字符输出

用指针实现两个字符连接,并将链接后的字符输出
#include<stdio.h>
#include<string.h>
void fun(char *p,char *s,char *c)
{int i,j,k,n;
j=strlen(p);
k=strlen(s);
for(i=0;i<=j;i++)
{
c[i]=p[i];
}
c[j+1]=0;
for(n=0;n<=k;n++)
{
c[j+1+n]=s[n];
}
}
int main()
{
char a[40];
char b[40];
char pr[80];
gets(a);
gets(b);
fun(pr);
puts(pr);
return 0;
}
这串代码有啥问题

修改处见注释,供参考:

#include<stdio.h>
#include<string.h>
void fun(char *p,char *s,char *c)
{
    int i,j,k,n;
    j=strlen(p);
    k=strlen(s);
    for(i=0;i<j;i++) //for(i=0;i<=j;i++)
    {
        c[i]=p[i];
    }
                    //c[j+1]=0;
    for(n=0;n<k;n++)//for(n=0;n<=k;n++)
    {
        c[i+n]=s[n]; // c[j+1+n]=s[n];
    }
    c[i+n]='\0';
}
int main()
{
    char a[40];
    char b[40];
    char pr[80];
    gets(a);
    gets(b);
    fun(a,b,pr); //fun(pr);
    puts(pr);

    return 0;
}