#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;
}
写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
最新推荐文章于 2025-02-22 10:57:15 发布