why null is assigned to name[i],name[i+j+1] and name[i+j+k+2] after one complete iteration in c programming

why null is assigned to name[i],name[i+j+1] and name[i+j+k+2] after one
complete iteration in c programming

I have this following program
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[50],fname[50],sname[50],lname[50];
int i,j,k;
printf("First Name:");
gets(fname);
printf("sname:");
gets(sname);
printf("lname:");
gets(lname);
for(i=0;fname[i]!='\0';i++)
name[i]=fname[i];
name[i]=' ';
for(j=0;sname[j]!='\0';j++)
name[i+j+1]=sname[j];
name[i+j+1]=' ';
for(k=0;lname[k]!='\0';k++)
name[i+j+k+2]=lname[k];
name[i+j+k+2]=' ';
printf("Concatenation is %s",name);
}
I am confused why there is a space (null) assigned in name[i]=' ' and
name[i+j+1]=' ' and name[i+j+k+2]=' ' in this program. If i execute with
these then only i am getting concatenation, but if i remove them i am
getting only the string of fname and i am not getting concatenation of
all.