কম্পিউটার টিউটোরিয়াল

C++-এ নিজের memcpy() এবং memmove() লিখা

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!
  1. C এবং C++-এ char কে int-এ কনভার্ট করা

  2. C++-এ strncat() ফাংশন

  3. C++ প্রোগ্রাম: ডেটা টাইপের সাইজ (int, float, double, char) জানা

  4. নিজস্ব কেইসার সিফার এনকোডার তৈরি করুন: ধাপে ধাপে গাইড