您的位置:首页 > 其它

写一个函数,完成内存之间的拷贝。[考虑问题是否全面]

2015-09-28 15:30 393 查看
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include  <assert.h>
void *memmove(void *dest, const void *src, size_t count)
{
assert((dest != NULL) && (src != NULL));     //安全检查
assert(count > 0);

char *psrc = (char *)src;
char *pdest = (char *)dest;
//检查是否有重叠问题
if (pdest < psrc)
{
//正向拷贝
while (count--)
*pdest++ = *psrc++;
}
else if (psrc < pdest)
{
//反向拷贝
psrc = psrc + count - 1;
pdest = pdest + count - 1;
while (count--)
*pdest-- = *psrc--;
}
return dest;
}

void *memmcpy(void *dest, const void *src, size_t count)
{
assert((dest != NULL) && (src != NULL));     //安全检查
assert(count > 0);

char *psrc = (char *)src;
char *pdest = (char *)dest;
while (count--)
*pdest++ = *psrc++;

return dest;
}

int main()
{
char str[] = "helloworld!";
memmove(str + 3, str, 4);
char str1[] = "helloworld!";
memmcpy(str1 + 3, str1, 4);

printf("%s\n", str);
printf("%s\n", str1);

getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: