man strncpy gives: The strncpy() function is similar, except that not more than n bytes of src are copied. Thus, if there is no null byte among the first n bytes of src , the result will not be null-terminated.
Does Strncpy add null?
The strncpy() function is similar to strcpy() function, except that at most n bytes of src are copied. ... If the length of src is less than n, strncpy() writes an additional NULL characters to dest to ensure that a total of n characters are written.
Does getting null terminate?
Yes it does, writing past the end of binary[33] if it needs to. Never use gets ; automatic buffer overrun. See Why is the gets function so dangerous that it should not be used? for details. Any new-line character is discarded, and a null character is written immediately after the last character read into the array.