20 lines
309 B
C
20 lines
309 B
C
|
#include <string.h>
|
||
|
void *memmove(void *vdest, const void *vsrc, size_t count)
|
||
|
{
|
||
|
const char *src = vsrc;
|
||
|
char *dest = vdest;
|
||
|
|
||
|
if (dest <= src) {
|
||
|
while (count--) {
|
||
|
*dest++ = *src++;
|
||
|
}
|
||
|
} else {
|
||
|
src += count - 1;
|
||
|
dest += count - 1;
|
||
|
while(count--) {
|
||
|
*dest-- = *src--;
|
||
|
}
|
||
|
}
|
||
|
return vdest;
|
||
|
}
|