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!