void *memmove( void *target, const void *source, size_t bytes )
memmove is like memcpy, except that memcpy cannot be used if the source and target areas overlap. memmove does not have this restriction.
memmove
memcpy