C++ version lower than C11 doesn't append null character in Case like when your source string has not enough space inside for destination string.
char str[5];
str="Ami"
char str2[10];
str2="NotGoing"
str has 2 free space but needed is 7 to concat str2 and 1 for the null character.
strncat(str,str2,);// case with no null termination.
now if str don't have space to write the whole destination (str2) inside it along with str pre-written data so in this case, it will not add a null char at the end
char str[10];
str="Ami"
char str2[3];
str2="Hello"
str got enough space for str2 inside it. so will add a null character at the end.
strncat(str,str2,);// case with null termination.
Formal I made to check on my own
length allocated to str >= strlen(str)+ strlen(str2)+1 ;
if this condition satisfies you will have a null terminated result otherwise you not.**