C++ এ strncpy() ফাংশন কি?
strncpy() ফাংশন হল একটি অন্তর্নির্মিত C++ ফাংশন যা একটি স্ট্রিং থেকে অন্য স্ট্রিংয়ে নির্দিষ্ট পরিমাণ অক্ষর কপি করতে ব্যবহৃত হয়। ফাংশনের তিনটি পরামিতি প্রয়োজন: গন্তব্য স্ট্রিং যা অক্ষর ধরে রাখবে, উৎস স্ট্রিং যা অক্ষর প্রদান করবে এবং অনুলিপি করার জন্য অক্ষরের গণনা। উৎস স্ট্রিং নির্দিষ্ট অক্ষরের সংখ্যার চেয়ে কম হলে, গন্তব্য স্ট্রিংটি অবশিষ্ট দৈর্ঘ্যে নাল অক্ষর দিয়ে প্যাড করা হবে।
একটি strncpy() ফাংশনের প্রোটোটাইপ নিচে দেওয়া হল।
চর * strncpy ( চর * হাত const চর * src, size_t গণনা ) ;
C++ strncpy() এর পরামিতি কি কি?
এর সমস্ত পরামিতি strncpy() ফাংশন নীচে ব্যাখ্যা করা হয়.
- হাত: গন্তব্য অ্যারের একটি পয়েন্টার যেখানে বিষয়বস্তু হয়েছে
- src: উৎস অ্যারের একটি পয়েন্টার যা থেকে বিষয়বস্তু হয়
- গণনা: উৎস থেকে গন্তব্যে কপি করা হতে পারে এমন অক্ষরের সর্বোচ্চ সংখ্যা।
কিভাবে strncpy() ফাংশন C++ এ কাজ করে
strncpy() ফাংশন তিনটি আর্গুমেন্ট গ্রহণ করে: গন্তব্য, src, এবং গণনা . এটা চেক করে যদি src স্ট্রিংটি নাল-টার্মিনেটেড, এবং যদি হ্যাঁ, এটি থেকে নির্দিষ্ট সংখ্যক অক্ষর কপি করে src স্ট্রিং থেকে শুরু স্ট্রিং দৈর্ঘ্যের চেয়ে কম গণনা হলে src স্ট্রিং, প্রথম গণনা অক্ষর স্থানান্তর করা হয়েছে শুরু স্ট্রিং এবং নাল-টার্মিনেট করা হয় না। গণনা দৈর্ঘ্য অতিক্রম করলে src , থেকে সমস্ত অক্ষর src অনুলিপি করা হয় শুরু , এবং সমস্ত গণনা অক্ষর লেখা না হওয়া পর্যন্ত অতিরিক্ত সমাপ্ত নাল অক্ষর অন্তর্ভুক্ত করা হয়েছে।
প্রদত্ত উদাহরণ C++ এর কাজকে চিত্রিত করে strncpy() ফাংশন
#অন্তর্ভুক্ত করুন
#include
ব্যবহার নামস্থান std ;
int প্রধান ( )
{
চর src_str [ ] = 'আমি strncpy এর জন্য একটি কোড লিখছি' ;
চর dest_str [ 60 ] ;
strncpy ( dest_str,src_str, strlen ( src_str ) ) ;
cout << dest_str << ' \n ' ;
ফিরে 0 ;
}
এই প্রোগ্রাম, আমরা ব্যবহার
দ্য আউটপুট প্রোগ্রাম নীচে দেখানো যেতে পারে.
C++ এ strncpy() ব্যবহারে সমস্যা কি?
- যদি গন্তব্য অ্যারেতে কোনো নাল অক্ষর না থাকে বা স্ট্রিংটি নাল-টার্মিনেট না হয়, তাহলে আমাদের প্রোগ্রাম বা কোড শীঘ্র বা পরে সমস্যার সম্মুখীন হতে পারে। C++ এ একটি নন-নাল টার্মিনেটেড স্ট্রিং ঝুঁকিপূর্ণ কোডে পরিণত হয়েছে যা প্রোগ্রাম এক্সিকিউশনের সময় যেকোনো মুহূর্তে ভেঙে যেতে পারে। এটি প্রোগ্রামে একটি বিভাজন ত্রুটি হতে পারে। ফলে, strncpy() নিশ্চিত করে না যে গন্তব্য স্ট্রিংটি সর্বদা নাল-টার্মিনেট করা হয়, যা আমরা যে প্রোগ্রামটি লিখছি তার জন্য এটি ঝুঁকিপূর্ণ কোড করে তোলে।
- এই ফাংশনটি ওভারফ্লো পরীক্ষা করতে ব্যর্থ হয়, তাই যদি আমরা সোর্স স্ট্রিংটিকে একটি গন্তব্যে অনুলিপি করার চেষ্টা করি যা উৎসের থেকে আকারে ছোট, আমরা একটি ত্রুটি এবং অনির্ধারিত আচরণ পাই।
উপসংহার
এক স্ট্রিং থেকে অন্য স্ট্রিং ডেটা কপি করতে, আমরা ব্যবহার করি strncpy() C++ এ যা একটি বিল্ট-ইন ফাংশন