模拟实现memcpy:
#include <stdio.h>
#include <windows.h>
#include <assert.h>
void *my_memcpy(void *dst, void* src, int size_t)
{
assert(dst);
assert(src);
char *ret = dst;
char *p = (char *)dst;
char *q = (char *)src;
while (size_t--)
{
*p++ = *q++;
}
return ret;
}
int main()
{
char buf[32];
char msg[32] = { 1,2,3,4,5,6,7,8,9 };
my_memcpy(buf,msg, sizeof(buf));
system("pause");
return 0;
}
模拟实现memmove
#include <stdio.h>
#include <windows.h>
#include <assert.h>
void *my_memmove(void *dst, void *src, int size_t)
{
assert(dst);
assert(src);
char *ret = dst;
char *dst_p = (char *)dst;
char *src_p = (char *)src;
if ((src_p<dst_p)&&(src_p + size_t)>dst_p)
{
dst_p = dst_p + size_t - 1;
src_p = src_p + size_t - 1;
while (size_t--)
{
*dst_p-- = *src_p--;
}
}
else
{
while (size_t--)
{
*dst_p++ = *src_p++;
}
}
return ret;
}
int main()
{
char buf[32];
char msg[32] = { 1,2,3,4,5,6,7,8,9 };
my_memmove(buf,msg+1, sizeof(buf));
system("pause");
return 0;
}
模拟实现memset:
#include <stdio.h>
#include <windows.h>
#include <assert.h>
void *my_memset(char *buf, int c,int count)
{
assert(buf);
char *ret = buf;
while (count--)
{
*buf = c;
buf++;
}
return ret;
}
int main()
{
char buf[32];
my_memset(buf, 0, sizeof(buf));
system("pause");
return 0;
}