memmove
原型:void *memmove( void* dest, const void* src, size_tcount );
用法:#include <string.h>或#include <memory.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针。
相关函数:memset、memcpy
代码:
void *memmove(void *dest, const void *src, size_t count)
{
void *ret = dest;
if(dest == NULL || src == NULL)
return;
//这里来判别dest和src是否是指向同一字符串中不同位置,
//如果是指向同一字符串,但是dest在src前面,则可以从前往后逐个赋值
//如果是指向同一字符串,但是dest在src后面,且dest>=src+count,那么仍然从前往后赋值
if(dest <= src || dest >= src+count)
{
while(count--)
*dest++ = *src++;
}
//如果是指向同一字符串,但是dest在src后面,且dest<=src+count,那么从后往前赋值
else
{
dest += count-1;
src += count-1;
while(count--)
*dest-- = *src--;
}
return ret;
}
memcpy代码:
void *memcpy(void *dest, const void *src, size_t count)
{
void *ret = dest;
if(dest == NULL || src == NULL)
return;
while(count--)
*dest++ = *src++;
return ret;
}
参照网址: