What is the difference between memcpy() and strcpy()? I tried to find it with the help of a program but both are giving the same output.
The problem with your test-program is, that the printf() stops inserting the argument into %s, when it encounters a null-termination \0.
So in your output you probably have not noticed, that memcpy() copied the characters c and h as well.
I have seen in GNU glibc-2.24, that (for x86) strcpy() just calls memcpy(dest, src, strlen(src) + 1).