memmove
#include <stdio.h> 
/*
void* memmove(void *dest, const void* src, size_t n) 
{ 
    if(dest == NULL || src == NULL) 
        return NULL; 
    char* p =(char*) dest; 
    char* q =(char*) src; 
    while(n--) 
    { 
        *p++ = *q++; 
    } 
    return dest; 
} 
//*/

void* memmove(void* pDest, void* pSrc, unsigned int count)
{
	char* dest , *src;
	unsigned int i;
	dest =(char*)pDest;
	src =(char*)pSrc;
	if(((char*)pDest < (char*)pSrc)|| ((char*)pSrc + count < (char*)pDest))
	{  //没有重叠的情形(正向拷贝)
		for(i = 0; i < count; i++)
			*dest++ = *src++;
	}
	else
	{  //有重叠的情形(逆向拷贝)
        dest += count - 1;
        src  += count - 1;
        for(i = 0; i < count; i++)
			*dest-- = *src--;
	}
	return pDest;
}



int main() 
{ 
    //char* p = "hello,world"; 
    //char dest[6] = {0,1,1,1,1,0}; 
	char p[]="hello,world";
	char *dest=p+2;
    char *q = (char*)memmove(dest,p,5); 
    printf("%s\n",dest); 
    printf("%s\n",q); 
    return 0; 
} 

阅读更多
文章标签: null include
个人分类: c++MFC学习笔记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

memmove

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭