// memcpy //
#include<stdio.h>
#include<windows.h>#include<assert.h>
void* my_memcpy(void*dest,const void*src,int count)
{
void*ret = dest;
assert(dest!=NULL);
assert(dest!=NULL);
while(count--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest+1;
src = (char*)src+1;
}
return ret;
}
int main()
{
char arr[20] = {0};
char s[] = "abcdef";
printf("%s\n",my_memcpy(arr,s,sizeof(s)/sizeof(s[0])));
system("pause");
return 0;
}
// memmove //
#include<stdio.h>
#include<windows.h>
#include<assert.h>
void* my_memmove(void*dest,const void*src,int count)
{
void*ret = dest;
assert(dest!=NULL);
assert(src!=NULL);
if(dest <= src || (char*)dest >= ((char*)src+count))
{
while(count--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest+1;
src = (char*)src+1;
}
}
else
{
dest = (char*)dest + count - 1;
src = (char*)src + count - 1;
while(count--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest-1;
src = (char*)src-1;
}
}
return ret;
}
int main()
{
char p[20] = "abcdefg";
my_memmove(p+3,p,10);
printf("%s\n",p);
system("pause");
return 0;
}