memcpy() ফাংশন একটি বিল্ট-ইন ফাংশন যা সোর্স লোকেশন থেকে ডেস্টিনেশন লোকেশনে ডেটা কপি করতে ব্যবহৃত হয়।
memcpy ফাংশনের প্রোটোটাইপ —
void * memcpy(void *destination_location, void *source_location, size_t size)
আমরা ক্যারেক্টার বাই ক্যারেক্টার ডেটা সোর্স থেকে ডেস্টিনেশনে কপি করব।
উদাহরণ
#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(dataD, dataS, strlen(dataS) + 1);
printf("Copied string is %s", dataD);
return 0;
}
আউটপুট
Copied string is Hello!
memmove() ফাংশন memcpy()-এর মতো, এটি ও সোর্স থেকে ডেস্টিনেশনে ক্যারেক্টার বাই ক্যারেক্টার ডেটা কপি করে। এটি memcpy()-এর একটি সমস্যা অতিক্রম করে যা ঘটে যখন সোর্স এবং ডেস্টিনেশন একে অপরের ওপরে ওভারল্যাপ করে।
আমাদের memmove()-এ, আমরা একটি টেম্পোরারি অ্যারে ব্যবহার করব যা ওভারল্যাপিং সোর্স এবং ডেস্টিনেশন সমস্যা হ্যান্ডেল করে।
উদাহরণ
#include <stdio.h>
#include <string.h>
void MemmoveFunc(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];
MemmoveFunc(dataD, dataS, strlen(dataS) + 1);
printf("Moved string is %s", dataD);
return 0;
}
আউটপুট
Moved string is Hello!