向一行数组中间插入另一个数组时出错

我定义了一个二维数组,想把第二行中的内容插到第一行中间,但我的程序不能正常执行

#include <stdio.h>
#include <string.h>
int main()
{
    int n,i,j,k,mid,all;
    scanf("%d",&n);
    char a[2][50];
    char str[50];
    for(i = 0; i < n;i++)
    {
        for(j = 0;j < n;j++)
        {
            gets(a[j]);
        }
        strcpy(str,a[1]);
        mid = strlen(a[0]) - 1;all=strlen(str);
        for(j=mid,k=0;k<all;j++,k++)
        {
            a[0][j] = str[k];
        }
        for(j = mid + all,k = mid;k < 50;j++,k++)
        {
            a[0][j]=str[mid];
        }
        printf("%s",a[0]);
    }
}