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!