একটি C ফাংশন থেকে স্ট্রিং রিটার্ন করা

Ekati C Phansana Theke Strim Ritarna Kara



স্ট্রিং অক্ষরগুলির একটি ক্রম যা হয় একটি একক অক্ষর বা একাধিক অক্ষর নিয়ে গঠিত এবং এটি কম্পিউটার প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ ডেটা কাঠামো। সাথে কাজ করার সময় স্ট্রিং সি-তে, কিছু অপারেশন করতে হয় স্ট্রিং ডাটা টাইপ যেমন আরম্ভ করা স্ট্রিং , বিষয়বস্তু বরাদ্দ করা, সংযুক্ত করা স্ট্রিং , তুলনা স্ট্রিং , এবং প্রত্যাবর্তন স্ট্রিং .

এই নিবন্ধটি এই ধরনের একটি অপারেশন উপর দৃষ্টি নিবদ্ধ করে স্ট্রিং ডেটা স্ট্রাকচার, যা একটি রিটার্ন করছে স্ট্রিং একটি সি ফাংশন থেকে।







একটি C ফাংশন থেকে স্ট্রিং রিটার্ন করা

হিসাবে স্ট্রিং অক্ষরের একটি অ্যারে এবং একটি সি ফাংশন থেকে স্ট্রিং ফেরত দিতে, স্ট্রিং ডেটা স্ট্রাকচারের একটি পয়েন্টারকে একটি প্যারামিটার হিসাবে কলিং ফাংশন থেকে কলিং ফাংশনে আর্গুমেন্ট হিসাবে পাস করতে হবে। পয়েন্টার তারপর অক্ষর একটি অ্যারে নির্দেশ করতে ব্যবহার করা যেতে পারে. একবার পয়েন্টার অক্ষরগুলির একটি অ্যারের দিকে নির্দেশ করে, স্ট্রিং রিটার্ন স্টেটমেন্ট ব্যবহার করে কল ফাংশন থেকে মান ফেরত দেওয়া যায়।



আপনি আরও ভাল বোঝার জন্য নীচের প্রদত্ত উদাহরণটি দেখতে পারেন।



# অন্তর্ভুক্ত করুন

const char * আমার নাম ( ) {
ফিরে 'জন' ;
}

int প্রধান ( অকার্যকর ) {
printf ( '%s' , আমার নাম ( ) ) ;
}





উপরের কোডে, আমরা সাধারণত যেভাবে ভেরিয়েবল ঘোষণা করি তার পরিবর্তে, আমরা এটির সাথে একটি পয়েন্টার ব্যবহার করেছি যাতে আমরা যখন এই স্ট্রিংটি ফেরত দিই, কোন ত্রুটি না ঘটে।

আউটপুট




A C ফাংশন a ফেরত দিতে পারে না স্ট্রিং যেটিকে একটি স্থানীয় ভেরিয়েবল হিসাবে নির্দিষ্ট করা হয়েছে যেহেতু ফাংশনটি চালানো শেষ হলে ভেরিয়েবলটি অবিলম্বে সরানো হবে (মুক্ত করা হবে), এটি অনুপলব্ধ রেন্ডার করবে এবং নীচের মতো একটি সতর্কতা ট্রিগার করবে:

# অন্তর্ভুক্ত করুন

const char myName ( ) {
char name = 'জন' ;
ফিরে নাম
}

int প্রধান ( অকার্যকর ) {
printf ( '%s' , আমার নাম ( ) ) ;
}

এই কোডে, ক সতর্কতা স্ট্রিং রিটার্ন করা হচ্ছে বলে ট্রিগার করা হয় ছাড়া কোন পয়েন্টার

আউটপুট


সুতরাং, আপনি নিম্নলিখিত উপায়ে কোড লিখতে পারেন:

# অন্তর্ভুক্ত করুন

const char * আমার নাম ( ) {
চর * নাম = 'জন' ;
ফিরে নাম
}
int প্রধান ( অকার্যকর ) {
printf ( '%s' , আমার নাম ( ) ) ;
}

আউটপুট


ডিফল্টরূপে ভেরিয়েবলগুলি স্ট্যাকের উপর বরাদ্দ করা হয়, যা উপরের বিবৃতির আসল কারণ। যাইহোক, যখন একটি পয়েন্টার ঘোষণা করা হয়, তখন এটি যে মান নির্দেশ করে তা হিপে বরাদ্দ করা হয়, যা ফাংশন শেষ হওয়ার পরে পরিষ্কার হয় না। মেমরি বরাদ্দ করা হলে, এর একটি অনুলিপি স্ট্রিং পয়েন্টার দ্বারা নির্দেশিত মূল মেমরি অবস্থান থেকে তৈরি করতে হবে এবং কপি ফাংশন থেকে ফেরত দিতে হবে। কলিং ফাংশনটির তখন মূল স্ট্রিং ডেটার উপর নিয়ন্ত্রণ থাকবে, যখন কলিং ফাংশনটি বরাদ্দকৃত স্থান মুক্ত করার জন্য দায়ী।

উপসংহার

একটি সি ফাংশন একটি পয়েন্টার নিতে পারে স্ট্রিং যুক্তি হিসাবে এবং ফেরত স্ট্রিং কল ফাংশনের মধ্যে সঞ্চালিত অপারেশনের ফলে মান। এটি অর্জন করার পদ্ধতিটি চর* এর একটি পয়েন্টার ব্যবহার করছে। কলিং ফাংশন সংরক্ষণ করার জন্য বরাদ্দ করা মেমরির জন্য দায়ী থাকবে স্ট্রিং , যখন বলা ফাংশন বরাদ্দ স্থান মুক্ত করার জন্য দায়ী।