সি প্রোগ্রামিং এইচটিএমএল সিএসএস জাভাস্ক্রিপ্ট পিএইচপি এসকিউএল
ফোরাম
×

 সি টিউটোরিয়াল

সি প্রোগ্রামিং কি? সি এর ইতিহাস সি এর বৈশিষ্ট্যসমূহ কেন সি শিখবেন? সি ইন্সটলেশন প্রথম সি প্রোগ্রাম সি প্রোগ্রামের ফ্লো প্রোগ্রামিং শেখার সঠিক পদ্ধতি সি কীওয়ার্ড সি আইডেন্টিফায়ার সি ভ্যারিয়েবল সি কনস্ট্যান্ট সি ডাটা টাইপ সি মোডিফায়ার সি ইনপুট/আউটপুট সি অপারেটর সি কমেন্ট সি অপারেটর অগ্রাধিকার

সি কন্ট্রোল স্টেটমেন্ট

সি ইফ সি ইফ...ইলস সি ফর লুপ সি হোহাইল লুপ সি ডু...হোহাইল লুপ সি ব্রেক সি কন্টিনিউ সি সুইচ স্টেটমেন্ট সি goto স্টেটমেন্ট

 সি ফাংশন

সি ফাংশন পরিচিতি সি ইউজার কর্তৃক ফাংশন সি ফাংশন টাইপ সি রিকার্সন সি ভ্যারিয়েবল স্কোপ

 সি অ্যারে

সি অ্যারে পরিচিতি সি মালটি-ডাইমেনশনাল অ্যারে সি অ্যারে ফাংশন

 সি স্ট্রিং

সি স্ট্রিং সি স্ট্রিং ফাংশন

 সি পয়েন্টার

সি পয়েন্টার পরিচিত সি পয়েন্টার অ্যারে সি পয়েন্টার ফাংশন সি মেমোরি ম্যানেজমেন্ট

 সি ফাইল এবং স্ট্রাকচার

স্ট্রাকচার পরিচিত স্ট্রাকচার ও পয়েন্টার সি স্ট্রাকচার ও ফাংশন সি ইউনিয়ন ফাইল হ্যান্ডেলিং

 সি অতিরিক্ত টিউটোরিয়াল

সি লাইব্রেরী সি প্রিপ্রোসেসর এবং ম্যাক্রো সি ইনুমিরেশন সি এরর নিয়ন্ত্রণ সি টাইপ কাস্টিং সি বিট ফিল্ড সি ভ্যারিয়েবল আর্গুমেন্ট সি কমান্ড লাইন আর্গুমেন্ট

 

সি প্রোগ্রামিং স্ট্রিং


এই অধ্যায়ে আপনি সি প্রোগ্রামিং স্ট্রিং(string) এবং এর বিভিন্ন অপারেশন সম্মন্ধে জানবেন। এছাড়া আপনি স্ট্রিং ডিক্লেয়ার(declare) করা, ইনিশিয়ালাইজ(initialize) করা এবং বিভিন্ন ইনপুট/আউটপুট অপারেশনে এদের ব্যবহার সম্মন্ধেও জানবেন।

সি প্রোগ্রামিং এ ক্যারেক্টারে(character) এর array কে স্ট্রিং বলা হয়। null(/0) ক্যারেক্টারের মাধ্যমে স্ট্রিং এর সমাপ্তি ঘটে। উদাহরনস্বরুপঃ

"c string tutorial"

এখানে, "c string tutorial" হলো স্ট্রিং(string)। কম্পাইলার যখন স্ট্রিং কে কম্পাইল করে তখন স্ট্রিং এর শেষে একটি null(/0) ক্যারেক্টার যুক্ত করে দেয়।


সি প্রোগ্রামিং এ মেমোরি ডায়াগ্রাম

স্ট্রিং ডিক্লেয়ারেশন

স্ট্রিং(string) নিয়ে কাজ করার পূর্বে প্রথমে তাদেরকে ডিক্লেয়ার(declared) করতে হবে।

array কে যে পদ্ধতিতে ডিক্লেয়ার(declared) করা হয় ঠিক একই পদ্ধতিতে স্ট্রিংও ডিক্লেয়ার করা হয়। শুধু পার্থক্য হলো স্ট্রিং char টাইপের


array ব্যবহার করেঃ

char s[5];
সি প্রোগ্রমিং এ স্ট্রিং ইনিশিয়ালাইজেশন

pointer ব্যবহার করেঃ

pointer ব্যবহার করেও স্ট্রিং ডিক্লেয়ার করা যেতে পারেঃ

char *p;

স্ট্রিং ইনিশিয়ালাইজেশন

সি প্রোগ্রামিং এ বিভিন্ন পদ্ধতিতে স্ট্রিং ইনিশিয়ালাইজ(initialized) করা যেতে পারে।

সহজ ও সুবিধার জন্য ইনিশিয়ালাইজেশন(initialization) এবং ডিক্লেয়ারেশন(declaration) উভয় কাজ একই ধাপে করা হয়।

array ব্যবহার করেঃ

char c[] = "abcd";

অথবা,
char c[5] = "abcd";

অথবা,
char c[] = {'a', 'b', 'c', 'd', '\0'};

অথবা,
char c[5] = {'a', 'b', 'c', 'd', '\0'};

সি প্রোগ্রামিং এ স্ট্রিং ইনিশিয়ালাইজেশন

pointer ব্যবহার করেঃ

pointer ব্যবহার করেও স্ট্রিংকে নিম্নের ন্যায় ইনিশিয়ালাইজ(initialized) করা যেতে পারেঃ

char *c = "abcd";

ইউজার থেকে স্ট্রিং পাঠ করা

অন্য সকল ডাটা টাইপের মতই scanf() ফাংশন ব্যবহার করে আপনি স্ট্রিং পাঠ(read) করতে পারেন।

যাইহোক scanf() ফাংশন প্রবেশকৃত শব্দ-সমূহের শুধুমাত্র প্রথম শব্দকে গ্রহণ করে। হোয়াইট স্পেস(white space) বা শুধুমাত্র স্পেসের দেখা পাওয়া মাত্র এই ফাংশনের সমাপ্তি ঘটে।


ইউজার থেকে শব্দ পাঠ/গ্রহণ করা

char c[20];
scanf("%s", c);

উদাহরনঃ scanf() ফাংশন ব্যবহার করে স্ট্রিং পাঠ করা

//টার্মিনাল(terminal) থেকে কিভাবে স্ট্রিং পাঠ/গ্রহণ করতে হয় তা ভালভাবে বুঝার জন্য সি প্রোগ্রাম
#include <stdio.h>
int main()
{
    char name[20];
    printf("Enter your name: ");
    scanf("%s", name);
    printf("Your name is %s.", name);
    return 0;
}

আউটপুট

Enter your name: Azizur Rahman
Your name is Azizur.

উপরের প্রোগ্রামে Rahman কে অবজ্ঞা করা হয়েছে কারণ scanf() ফাংশন স্পেসের পূর্ববর্তী একটি মাত্র শব্দকে গ্রহণ করে।


text এর একটি সারিকে পাঠ করা

টেক্সট এর একটি সম্পূর্ণ সারিকে পাঠ/গ্রহণ করার জন্য প্রত্যেক ক্যারেক্টারকে একটি একটি করে পাঠ করা হয়।


উদাহরনঃ getchar() ফাংশন ব্যবহার করে টেক্সট(text) এর একটি সারিকে পাঠ করা

//টার্মিনাল(terminal) থেকে কিভাবে একটি একটি করে ক্যারেক্টার পাঠ করতে হয় তা ভালভাবে বুঝার জন্য সি প্রোগ্রাম
#include <stdio.h>
int main()
{
    char name[30], ch;
    int i = 0;
    printf("Enter name: ");
    while(ch != '\n')    //ইউজার enter বাটনে ক্লিক করলেই সমাপ্তি ঘটে
    {
        ch = getchar();
        name[i] = ch;
        i++;
    }
    name[i] = '\0';       // সবশেষে null ক্যারেক্টার যুক্ত করা
    printf("Name: %s", name);
    return 0;
}

উপরে প্রোগ্রামে getchar() ফাংশন ব্যবহার করে প্রতিবার ch ইউজার থেকে একটি করে অক্ষর গ্রহণ করে।

ইউজার enter বাটনে ক্লিক না করা পর্যন্ত এই প্রক্রিয়া চলতেই থাকে। পরিশেষে ইহাকে স্ট্রিং তৈরি করার জন্য শেষে একটি null character যুক্ত করা হয়।

স্ট্রিং গ্রহণের জন্য ইহা একটি বিরক্তিকর পদ্ধতি।


লাইব্রেরী ফাংশন ব্যবহার করে

সি প্রোগ্রামিং এ স্ট্রিং গ্রহণ এবং প্রদর্শনীর জন্য আরোও সহজ পদ্ধতিঃ পূর্বনির্ধারিত লাইব্রেরী ফাংশন যথাক্রমে gets() এবং puts ব্যবহার করতে পারেন।


উদাহরনঃ স্টান্ডার্ড লাইব্রেরী ফাংশন ব্যবহার করে এক সারি(line) টেক্সটকে পাঠ করা

//gets() এবং puts() ব্যবহার করে এক লাইন টেক্সট(text)  পাঠ করার জন্য সি প্রোগ্রাম
#include <stdio.h>
int main()
{
    char name[30];
    printf("Enter name: ");
    gets(name);     //ইউজার থেকে স্ট্রিং পাঠ করার জন্য ফাংশন
    printf("Name: ");
    puts(name);    //স্ট্রিং প্রদর্শনীর ফাংশন
    return 0;
}

উপরের উভয় প্রোগ্রাম নিচের ন্যায় একই আউটপুট দেয়ঃ


আউটপুট

Enter name: Azizur Rahman 
Name: Azizur Rahman 

ফাংশনের মধ্য দিয়ে স্ট্রিং অতিক্রম করানো

সি প্রোগ্রামিং এ স্ট্রিং char array এর মতই। সুতরাং এদেরকে array এর মত একই পদ্ধতিতে ফাংশনের মধ্য দিয়ে অতিক্রম(pass) করানো যেতে পারে।

আরোও জানতে ফাংশনের মধ্য দিয়ে array অতিক্রম অধ্যায় ভিজিট করুন।

#include <stdio.h>
void displayString(char str[]);

int main()
{
    char str[50];
    printf("Enter string: ");
    gets(str);             
    displayString(str);     // ফাংশনের মধ্য দিয়ে স্ট্রিং s কে অতিক্রম করানো হয়।     
    return 0;
}
void displayString(char str[]){
    printf("String Output: ");
    puts(str);
}

উপরের প্রোগ্রামে স্ট্রিং(string) s কে main() ফাংশন থেকে ইউজার ডিফাইন্ড(user-defined) ফাংশন displayString() এর মধ্য দিয়ে অতিক্রম(pass) করানো হয়েছে। ফাংশন ডিক্লেয়ারেশনে str[] হলো ফরম্যাল আর্গুমেন্ট(formal argument)।


স্ট্রিং পরিচালনার ফাংশন

সি প্রোগ্রামিং এ অনেক ধরণের স্ট্রিং অপারেশন রয়েছে যেগুলো আপনি ম্যানুয়ালি(manually) সম্পাদন করতে পারেন। যেমন- স্ট্রিং এর দৈর্ঘ্য(length) নির্ণয়, স্ট্রিং কপি(copy) করা, দুটি স্ট্রিং এর সংযোগ(concatenation) ইত্যাদি।

কিন্তু প্রোগ্রামারদেরকে সহজ করে দেওয়ার জন্য এধরনের অনেক লাইব্রেরী ফাংশন <string.h> হেডার ফাইলের অধীনে ইতোমধ্যেই ডিফাইন্ড(defined) করা আছে।

আরোও জানতে সি প্রোগ্রামিং স্ট্রিং পরিচালনা অধ্যায় ভিজিট করুন।