求大神帮忙看看这个c语言他题目代码的缺陷~~

问题描述:

7.1连接两个字符串

不使用 strcat 函数,编写一个程序将两个字符串连接起来,注意程序首先需要通过键盘输入两个字符串,然后将它们连接起来,将连接后的字符串存储于新的字符数组中,再打印数出。

 #include<stdio.h>   
int main()   
{   
char a[50],b[50],c[50];int i=0,j;   
gets(a);   
gets(b);   
while(a[i]!='\0')   
{   
c[i]=a[i];   
i++;   
}   
j=i,i=0;   
while(b[i]!='\0')   
{   
c[j]=b[i];   
j++,i++;   
}   
puts(c);   
return 0;   
}  

我这个在平台上测试的时候有一个隐藏用例错误了,,,,,why
这个代码啥缺陷?图片说明

 #include<stdio.h>   
int main()   
{   
    char a[50],b[50],c[50];int i=0,j;   
    gets(a);   
    gets(b);   
    while(a[i]!='\0')   
    {   
        c[i]=a[i];   
        i++;   
    }   
    j=i,i=0;   
    while(b[i]!='\0')   
    {   
        c[j]=b[i];   
        j++,i++;   
    } 
    c[j]=0;//增加一个字符串结束标志
    puts(c);   
    return 0;   
}