用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!