用C ++编写自己的memcpy()和memmove()

memcpy()函数是一个内置函数,用于将数据从源位置复制到目标位置。

memcpy函数的原型-

无效* memcpy(无效*目标位置,无效*源位置,size_t大小)

我们将逐字符复制数据,从源到目标。

展示解决方案实施情况的程序,

示例

#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
   char *dataS = (char *)src;
   char *dataD = (char *)dest;
   for (int i=0; i<n; i++)
      dataD[i] = dataS[i];
}
int main() {
   char dataS[] = "Hello!";
   char dataD[100];
   MemcpyFunc(dataS, dataD, strlen(dataS)+1);
   printf("Copied string is %s", dataD);
   return 0;
}

输出结果

Copied string is Hello!

memmove()函数类似于memcpy(),它也按字符将数据从源char复制到目标char。它克服了memcopy()当源和目标相互重叠时发生问题的问题。

在我们的中memmove(),我们将使用一个临时数组来处理重叠的源和目标问题。

展示解决方案实施情况的程序,

示例

#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
   char *dataS = (char *)src;
   char *dataD = (char *)dest;
   char *temp = new char[n];
   for (int i=0; i<n; i++)
      temp[i] = dataS[i];
   for (int i=0; i<n; i++)
      dataD[i] = temp[i];
}
int main() {
   char dataS[] = "Hello!";
   char dataD[100];
   MemcpyFunc(dataS, dataD, strlen(dataS)+1);
   printf("Moved string is %s", dataD);
   return 0;
}

输出结果

Moved string is Hello!