您的位置:首页 > 编程语言 > C语言/C++

用C语言实现函数 memmove

2014-07-05 17:38 399 查看
用C 语言实现函数void * memmove(void *dest,const void *src,size_t n)。memmove函数的功能是拷贝src 所指的内存内容前n 个字节到dest 所指的地址上

#include <iostream.h>

/*
按字节拷贝时指针类型的转换,第二点就是内存有重叠
*/

void *memmove(void *dest,const void *src,size_t count)
{
void * ret = dest;

if (dest <= src || (char *)dest >= ((char *)src + count)) {
/*
* Non-Overlapping Buffers
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dest = *(char *)src;
dest = (char *)dest + 1;
src = (char *)src + 1;
}
}
else {
/*
* Overlapping Buffers
* copy from higher addresses to lower addresses
*/
dest = (char *)dest + count - 1;
src = (char *)src + count - 1;

while (count--) {
*(char *)dest = *(char *)src;
dest = (char *)dest - 1;
src = (char *)src - 1;
}
}

return(ret);
}

void main( )
{

char* p = "hello,world";
char dest[6] = {0};
char *q = (char*)memmove(dest,p,5);
cout<<q<<endl;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: