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

সি/সি++-তে strncpy কেন নিরাপদ (Insecure) মाना হয়?


strncpy() ফাংশনটি নির্দিষ্ট সংখ্যক ক্যারেক্টার সোর্স থেকে ডেস্টিনেশন-এ কপি করতে ব্যবহৃত হয়।

strncpy()-র সিনট্যাক্স নিচে দেওয়া হলো:

char *strncpy(char *destination, char *source, size_t n);

এখানে, destination হলো ডেস্টিনেশন অ্যারে পয়েন্টার যেখানে সোর্স স্ট্রিং কপি হবে, source হলো কপি করা স্ট্রিং, এবং n হলো সোর্স স্ট্রিং থেকে কপি করার সর্বোচ্চ ক্যারেক্টার সংখ্যা।

strncpy() ফাংশনটি নিরাপদ নয় কারণ যদি প্রথম n ক্যারেক্টারের মধ্যে সোর্স স্ট্রিং-এ NULL ক্যারেক্টার (\0) না থাকে, তবে ডেস্টিনেশন স্ট্রিং NULL-টার্মিনেটেড (NULL terminated) হবে না।

একটি প্রোগ্রাম যা সি++-তে strncpy() প্রদর্শন করে নিচে দেওয়া হলো।

উদাহরণ

#include <iostream>
#include <cstring>
using namespace std;

int main() {
    char source[20] = "This is a string";
    char dest[20];
    strncpy(dest, source, 4);
    cout << "The destination string is: " << dest;
    return 0;
}

আউটপুট

উপরের প্রোগ্রামের আউটপুট নিচের মতো:

The destination string is: This

এখন উপরের প্রোগ্রামটি বুঝি।

সোর্স স্ট্রিং-এ "This is a string" ডেটা আছে। তারপর strncpy() ব্যবহার করে প্রথম চারটি ক্যারেক্টার ডেস্টিনেশন স্ট্রিং-এ কপি করা হয়েছে। তারপর ডেস্টিনেশন স্ট্রিং-এর কন্টেন্ট প্রিন্ট করা হয়েছে। এটি দেখানো কোড স্নিপেট নিচে:

char source[20] = "This is a string";
char dest[20];
strncpy(dest, source, 4);
cout << "The destination string is: " << dest;
  1. C ভাষায় strncpy() ফাংশন কী?

  2. C/C++-এ নাল-টার্মিনেটেড স্ট্রিং কী?

  3. C/C++-এ স্ট্রিং ইন্টিজার কিনা চেক করা

  4. C/C++-এ স্ট্রিং রিভার্স করা