以下为memmove的简单实现
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<string.h>
//第一个1参数:目的地
//第二个参数:数字来自于哪里
//第三个参数:拷贝的长度(单位为字节)
void* my_memmove(void*dest,constvoid*src,size_tcount)
{
void*ret=dest;
assert(dest !=NULL);
assert(src !=NULL);
if(dest<src)
{
while(count--)
{
*(char*)dest=*(char*)src;
(char*)dest;
dest++;
(char*)src;
src++;
}
}
else
{
while(count--)
{
*((char*)dest+count)=*((char*)src+count);
}
}
returnret;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};//将1,2,3,4,5的数据拷贝到3,4,5,6,7上去
inti=0;
my_memmove(arr+2,arr,8);
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return0;
}
以下为memcpy函数的简单实现
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<string.h>
//第一个1参数:目的地
//第二个参数:数字来自于哪里
//第三个参数:拷贝的长度(单位为字节)
void* my_memcpy(void*dest,constvoid*src,size_tcount)
{
char*ret=dest;
assert(dest!=NULL);
assert(src !=NULL);
while(count--)
{
*(char*)dest=*(char*)src;
(char*)dest;
dest+=1;
(char*)src;
src+=1;
}
returnret;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};//将1,2,3,4,5的数据拷贝到3,4,5,6,7上去
inti=0;
my_memcpy(arr+5,arr,20);
for(i=0;i<10;i++)
{
printf("%d",arr[i]);
}
return0;
}