##### Synopsis

    #include <string.h>
    void *memmove(void *s1, const void *s2, size_t n);

##### Description

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.

##### Portability

memmove conforms to ISO/IEC 9899:1990 (C90) and ISO/IEC 9899:1999 (C99).