今天用到了memcpy()库函数,然后自己实现了一个结合源码应该是这样的
void *memmove(void *dest, const void *src, size_t count) {
assert((NULL != dest) && (NULL != src) && (count > 0));
char *pdest = (char *)dest;
const char *psrc = (const char *)src;
if (psrc > pdest) {
while (count--) {
*pdest++ = *psrc++;
}
} else if (psrc < pdest) {
psrc += (count-1);
pdest += (count-1);
while (count--) {
*pdest-- = *psrc--;
}
}
return dest;
}
是否还有更好的办法,请大师指点?