The simple difference is that memcpy()
can copy data with embedded null characters (aka the string terminator in C-style strings) whereas strncpy()
will only copy the string to the maximum of either the number of characters given or the position of the first null character (and pad the rest of the strings with 0s).
In other words, they do have two very different use cases.