1#include <string.h>23#undef memmove45void *6memmove(void *s1, const void *s2, size_t n)7{8 char *d = s1;9 const char *s = s2;1011 if (d < s) {12 while (n-- > 0)13 *d++ = *s++;14 } else {15 s += n-1, d += n-1;1617 while (n-- > 0)18 *d-- = *s--;19 }20 return s1;21}