#include <string.h>
void *memmove(void *s1, const void *s2, size_t n);
memmove copies n characters from the object pointed to by s2
into the object pointed to by s1 ensuring that if s1 and s2
overlap, the copy works correctly. Copying takes place as if the n characters
from the object pointed to by s2 are first copied into a temporary array
of n characters that does not overlap the objects pointed to by s1
and s2, and then the n characters from the temporary array are
copied into the object pointed to by s1.
memmove returns the value of s1.
memmove conforms to ISO/IEC 9899:1990 (C90) and ISO/IEC 9899:1999 (C99).