মডিউল ১০-৩: স্ট্রিং ইনপুট

এবার আমরা স্ট্রিং ইনপুট নিব। ইনপুটের ক্ষেত্রেও স্ট্রিং এর স্পেশাল পাওয়ার আছে। অন্য কোন এরে লুপ না চালিয়ে এক লাইনে ইনপুট নেওয়া যায় না। কিন্তু ক্যারেক্টার এরে অর্থাৎ স্ট্রিং এক লাইনে ইনপুট নেওয়া যায় ঠিক প্রিন্ট এর মতই %s ব্যাবহার করে।

#include<stdio.h>
int main()
{
    char a[5];
    scanf("%s",&a);  // %s দিয়ে স্ট্রিং ইনপুট নেওয়া হচ্ছে। 
    printf("%s\n",a);  //  %s দিয়ে স্ট্রিং প্রিন্ট করা হচ্ছে। 
    return 0;
}

এই কোডটি রান করে যদি আমরা Hello ইনপুট দেই তাহলে Hello প্রিন্ট হবে। যদিও এটি হওয়ার কথা না কারন আমরা গত মডিউলেই জেনেছি ৫ সাইজের একটি স্ট্রিং Hello স্টোর করতে হলে আমাদের স্ট্রিং ডিক্লেয়ার করার সময় তার সাইজ ৬ বলে দিতে হবে। এখানে আমরা ডিক্লেয়ার করার সময় সাইজ ৫ বলেছি, নাল ক্যারেক্টার বসানোর জায়গা রাখি নি। তাও এটি ঠিকঠাক ভাবে প্রিন্ট হওয়ার কারন হচ্ছে উইন্ডোজ অপারেটিং সিস্টেম। উইন্ডোজ কিছু এক্সট্রা মেমরি এলোকেট করে ফেলে। তাই যদিও আমরা ৫ সাইজের এরে ডিক্লেয়ার করছি কিন্তু সেটার একচুয়াল সাইজ আসলে বেশি। কোন অনলাইন জাজ অথবা লিনাক্স অপারেটিং সিস্টেমে এটি হবে না।

তাই বেস্ট প্র্যাকটিস হচ্ছে আমরা যত সাইজের স্ট্রিং ইনপুট নিতে চাচ্ছি তার থেকে এটলিস্ট ১ সাইজ বেশি ডিক্লেয়ার করা।

#include<stdio.h>
int main()
{
    char a[6];      // 5 সাইজের স্ট্রিং ইনপুট দেওয়া হবে তাই নাল বসানোর জন্য জায়গা রেখে ৬ সাইজ ডিক্লেয়ার করা হচ্ছে।
    scanf("%s",&a);  // %s দিয়ে স্ট্রিং ইনপুট নেওয়া হচ্ছে। 
    printf("%s\n",a);  //  %s দিয়ে স্ট্রিং প্রিন্ট করা হচ্ছে। 
    return 0;
}

এই কোডটি রান করে যদি আমরা Hello ইনপুট দেই তাহলে প্রোপারলি Hello প্রিন্ট হবে। যেকোন অপারেটিং সিস্টেমে এবং অনলাইন কম্পাইলারেও।

Last updated