Così dovrebbe funzionare

#include <stdio.h>
#include <string.h>

int main()
{
char str1[20];
char str2[20];
char *ptr,*b=" ";
char a;
int l;

printf("\nInserisci due stringhe: \n");
scanf("%s",str1);
scanf("%s",str2);
l=strlen(str1)+strlen(str2)+1;
ptr=(char*)malloc(l*sizeof(char));
strncpy(ptr,str1,strlen(str1));

strncpy(ptr+strlen(str1),b,strlen(b));

strncpy(ptr+strlen(str1)+strlen(b),str2,strlen(str 2));

ptr[strlen(str1)+strlen(str2)+strlen(b)]='\0';
printf("%s\n",ptr);
}


Ho cercato di continuare con la tua logica, però se non ti sei accorto prima c'era un errore, ti stampava solo 1 delle 2 stringhe che inserivi!