Thursday, May 7, 2020

The function " strcpy() "

C প্রোগ্রামিংয়ে strcpy(X, Y) ফাংশন — বিস্তারিত বিশ্লেষণ

C প্রোগ্রামিং ভাষায় স্ট্রিং (String) মানে হচ্ছে এক ধরনের ক্যারেক্টার অ্যারে বা অক্ষরের সারি, যা \0 (null character) দ্বারা শেষ হয়। আর এই স্ট্রিংগুলোকে একে অপরের মাঝে কপি করার জন্য C-তে একটি শক্তিশালী ফাংশন রয়েছে যার নাম হচ্ছে  strcpy()

strcpy(X, Y); ফাংশন কী?

strcpy() হল একটি স্ট্যান্ডার্ড লাইব্রেরি ফাংশন যা Y স্ট্রিং-এর কনটেন্টকে X-এ কপি করে। এটি string.h হেডার ফাইলের অন্তর্গত।

ফাংশনের সিনট্যাক্স:

#include <string.h>

strcpy(destination, source);
  • destination → যেটি স্ট্রিংটি রিসিভ করবে (X)
  • source → যেটি থেকে কপি করা হবে (Y)

অর্থাৎ: strcpy(X, Y); অর্থ: Y-এর মান X-এ কপি করো।

🧪 উদাহরণ:

#include <stdio.h>
#include <string.h>

int main() {
    char X[20];
    char Y[] = "Hello, World!";

    strcpy(X, Y);

    printf("X এর মান: %s\n", X);
    return 0;
}

আউটপুট:
X এর মান: Hello, World!

গুরুত্বপূর্ণ বিষয়:

  • X (destination) এর আকার যথেষ্ট বড় হতে হবে যেন Y-এর সব অক্ষর + null character (\0) ধারণ করতে পারে।
  • যদি X ছোট হয়, তাহলে buffer overflow হতে পারে যা অ্যাপ ক্র্যাশ বা সিকিউরিটি রিস্ক সৃষ্টি করতে পারে।

মেমোরি ভিউ (Visualization):

| Y | → | H | e | l | l | o | , |   | W | o | r | l | d | ! | \0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|----|
| X | ← কপি হয়ে যায় →

strcpy() এর কার্যপ্রণালি (কোডের মাধ্যমে):

char* strcpy(char* dest, const char* src) {
    char* ptr = dest;
    while (*src != '\0') {
        *ptr++ = *src++;
    }
    *ptr = '\0'; // null character যোগ করা
    return dest;
}

 বিকল্প: strncpy() — আরও নিরাপদ সংস্করণ

strncpy(X, Y, sizeof(X) - 1);
X[sizeof(X) - 1] = '\0'; // null যোগ করা নিশ্চিত করার জন্য

এটি buffer overflow প্রতিরোধে সহায়ক।

strcpy() ব্যবহার করার সময় সতর্কতা:

সমস্যা সমাধান
Buffer overflowstrncpy() ব্যবহার করুন
Source string null না হলেপ্রোগ্রাম ক্র্যাশ করতে পারে
Destination ছোট হলেঅপ্রত্যাশিত রেজাল্ট

বাস্তব জীবন ব্যবহার:

  • ইউজারের নাম বা ইনপুট কপি করা
  • ফাইলপাথ স্টোর করা
  • লোকাল কপি তৈরি করে প্রসেস করা

উপসংহার

strcpy() একটি অত্যন্ত গুরুত্বপূর্ণ এবং বহুল ব্যবহৃত C লাইব্রেরি ফাংশন। যদিও এটি ব্যবহারে কিছু সতর্কতা দরকার, তবুও সঠিকভাবে ব্যবহার করলে স্ট্রিং কপি করার জন্য এটি দ্রুত ও কার্যকর।

পরামর্শ: যদি নিরাপত্তা গুরুত্বপূর্ণ হয়, তাহলে strncpy() অথবা strcpy_s() (modern C) ব্যবহার করাই ভালো।

যদি এই ব্লগটি আপনার উপকারে আসে, নিচে কমেন্ট করুন এবং শেয়ার করতে ভুলবেন না।