本文主要是介绍用C语言实现函数void * memmove(void *dest, const void *src, size_t n),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用C语言实现函数void * memmove(void *dest, const void *src, size_t n)。memmove
函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。
注意考虑地址叠加问题,即dest的地址是在src的哪个位置。
是在src的下面,还是上面,上面的话是 dest>(src+n),还是dest<(src-n)呢?
#include<stdio.h>
void * memmove(void *dest, const void *src, size_t n)
{if(dest==NULL || src==NULL){return NULL;}char* p_dest=(char*) dest;char* p_src = (char*) src;if(p_dest<p_src || p_dest>(p_src+n)){while(n--){*p_dest++=*p_src++;}//*p_dest='\0'; 后面如果要舍弃,就加上去}else if( p_dest <(p_src+n)){p_dest=p_dest+n-1;p_src=p_src+n-1;while(n--)*p_dest--=*p_src--;//*(p_dest+n)='\0';}return dest;
}int main()
{char d[7]={'1','2','3','4','5','6'};char s[7]={'a','b','c','d','e','f'};char *dest=d;char *src=s;dest=(char *)memmove( dest, src, 3);printf("%s ",dest);return 0;
}
这篇关于用C语言实现函数void * memmove(void *dest, const void *src, size_t n)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!