模拟实现memcpy
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <assert.h>
void* my_memcpy(void* dest, const void* src,size_t count)
{
void *ret = dest;
assert(dest);
assert(src);
while(count)
{
*(char *)dest = *(char *)src;
dest = (char *)dest+1;
src = (char *)src+1;
count--;
}
return ret;
}
int main()
{
char arr[] = {"1234567890"};
char str[] = {"adasj ?"};
int sz = sizeof(arr)/sizeof(arr[0]);
int i=0;
char *ret=my_memcpy(arr,str,7);
printf("%s\n",ret);
system("pause");
return 0;
}
模拟实现memmove
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
void *my_memmove(void *dest,const void *src,size_t count)
{
void *ret = dest;
assert(dest);
assert(src);
if((src<dest)&&((char*)dest<(char*)src+count))
{
while(count--)
{
*((char*)dest+count)=*((char*)src+count);
}
}
else
{
while(count--)
{
*(char*)dest=*(char*)src;
dest=(char*)dest+1;
src=(char*)src+1;
}
}
return ret;
}
int main()
{
int i=0;
int arr[]={1,2,3,4,5,6,7,8,9,0};
int sz=sizeof(arr)/sizeof(arr[0]);
my_memmove(arr+3,arr,4*sizeof(int));
for(i=0;i<sz;i++)
{
printf("%d ",arr[i]);
}
system("pause");
return 0;
}
模拟实现memcpy和memmmove
最新推荐文章于 2022-03-24 15:42:07 发布