●内存拷贝函数memmove模拟实现 (操作的基本单位是字节,对类型不关心)
memmove本为标准库中的函数,现人为的实现其功能;
根据拷贝的地址大小的不同,分为从右向左拷贝和从左向右拷贝两种拷贝方式
代码如下:
void *my_memmove(void *dst
,const void *src
,size_t num
)
{
assert(dst
!=NULL);
assert(src
!=NULL);
if( dst
>src
&&dst
<src
+num
)
{
const char*src_
=(char*)src
+num
-1;
char*dst_
=(char*)dst
+num
-1;
while(num
>0)
{
*dst_
=*src_
;
dst_
--;
src_
--;
num
--;
}
}
else
{
const char*src_
=(char*)src
;
char*dst_
=(char*)dst
;
while(num
>0)
{
*dst_
=*src_
;
dst_
++;
src_
++;
num
--;
}
}
}
int main()
{
char dst
[32]="asdfghjkl";
int len
=strlen(dst
);
my_memmove(dst
,dst
+3,len
);
printf("%s",dst
);
return 0;
}
转载请注明原文地址: https://lol.8miu.com/read-39006.html