memcpy() ฟังก์ชั่นเป็นฟังก์ชัน inbuilt ที่ใช้ในการคัดลอกข้อมูลจากตำแหน่งต้นทางไปยังตำแหน่งปลายทาง
ต้นแบบของฟังก์ชัน memcpy -
เป็นโมฆะ * memcpy(เป็นโมฆะ *destination_location เป็นโมฆะ *source_location ขนาด 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 () นอกจากนี้ยังคัดลอกข้อมูลจากแหล่งไปยังถ่านปลายทางด้วยถ่าน มันเอาชนะปัญหาของ 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!