«

»

ফেব্রু. 16

সি প্রোগ্রামিং – লেকচার ১১ – স্ট্রিং অপারেশন

[কোর্সের মূল পাতা]

সি ল্যাংগুয়েজে আমরা বিভিন্ন সময় স্ট্রিং ব্যবহার করি। সি ল্যাংগুয়েজে স্ট্রিং বলতে সাধারনত বোঝায় এক বা একাধিক অক্ষরের সমন্বয়ে গঠিন একটা শব্দ বা বাক্য যার শেষে একটা NULL ক্যারেকটার (যেটা আসলে শূন্য) থাকে।

নিচে কয়েকটি স্ট্রিং এর উদাহরণ দেখি-

“আমার সোনার বাংলা”
“Hello World”
“Sirajganj”
“I”

একটা অক্ষর থাকলেও সেটা স্ট্রিং হতে পারে। সিংগেল কোট দিয়ে ‘I’ এভাবে লিখরে সেটা স্ট্রি হবে না।

এই স্ট্রিংগুলা আমরা সরাসরি কনসলে প্রিন্ট করতে পারি-

printf(“Hello World”);

ব্যবহারকারী থেকে একটা স্ট্রিং ইনপুট নেয়ার জন্য আমরা scanf বা gets ফাংশন দুটি ব্যবহার করি। একটা শব্দ ইনপুট নেয়ার জন্য scanf এবং পুরো লাইন ইনপুট নেয়ার জন্য gets ব্যবহার করা সুবিধাজনক। scanf ব্যবহার করে অবশ্য যে কোন ধরণের ইনপুট নেয়া সম্ভব। নীচে আমরা দুটি য়াংশনেরই কয়েকটি উদাহরণ দেখব।

প্রথমে আমরা দেখি স্টিং এর ইনপুট আউটপুট।

#include "stdio.h"

int main(int argc, char* argv[])
{
    char name[50];

    printf("Enter your name: ");
    scanf("%s", name);
    printf("Hello %sn", name);

    return 0;
}

নীচে প্রোগ্রিমটি ২ বার রান করে প্রথমবার Manir এবং দ্বিতীবার Maruf Maniruzzaman ইনপুট হিসাবে কিবোর্ডে টাইপ করা হয়েছে। দ্বিতীয় ক্ষেত্রে শুধু প্রথম শব্দটি ইনপুটে এসেছে।

Enter your name: Manir
Hello Manir

Enter your name: Maruf Maniruzzaman
Hello Maruf

এখন আমরা চাই পুরো লাইন ইনপুট নিতে-

#include "stdio.h"

int main(int argc, char* argv[])
{
    char name[50];

	printf("Enter your name: ");
	gets(name);
	printf("Hello %sn", name);

	return 0;
}

একবার রান করে আউটপুট দেখি

Enter your name: Maruf Maniruzzaman
Hello Maruf Maniruzzaman

stpcpy

একটা স্ট্রিংকে আরেকটা স্টিং ভেরিয়েবলের মধ্যে কপি করার জন্য আমরা stpcpy ব্যবহার করি

এই ফাংশনের প্রোটোটাইপ এরকমঃ

char *stpcpy (const char *dest,const char *src)

উদাহরণঃ

#include "stdio.h"
#include "string.h"

int main(int argc, char* argv[])
{
    char str1[50], str2[100];

    printf("Enter something: ");
    gets(str1);
    strcpy(str2, str1);
    printf("You entered: %sn", str2);
    return 0;
}

রান করে আউটপুট দেখি

Enter something: Hello world.
You entered: Hello world.

strcmp

দুইটা স্ট্রিং এর তুলনা করতে আমরা ব্যবহার strcmp করি

এই ফাংশনের প্রোটোটাইপ এরকমঃ

int strcmp(const char *string1,const char *string2)

উদাহরণঃ

#include "stdio.h"
#include "string.h"

int main(int argc, char* argv[])
{
    char str1[50], str2[100];

    printf("Enter first string: ");
    gets(str1);
    printf("Enter second string: ");
    gets(str2);

    int comp = strcmp(str1, str2);

    if(comp == 0)
    {
        printf("The strings are same.n");
    }
    else if(comp < 0)
    {
        printf("First string  < second string.n)
    }
    else
    {
        printf("First string > second string.n");
    }

    return 0;
}

রান করে আউটপুট দেখি।

দুইবার বার করা হয়েছে। প্রথমবার দুইবারই একই স্ট্রিং ইনপুট দিয়েছি। দ্বিতীয়বার দুাইটা আলাদা স্ট্রিং ইনপুট দিয়েছি-

Enter first string: test string
Enter second string: test string
The strings are same.

Enter first string: apple
Enter second string: banana
First string second string.

strlen

একটা স্ট্রিং এর দৈর্ঘ্য কত সেটা বের করার জন্য আমরা strlen ব্যবহার করি
এই ফাংশনের প্রোটোটাইপ এরকমঃ

int strlen(const char *string)

উদাহরণঃ

#include "stdio.h"
#include "string.h"

int main(int argc, char* argv[])
{
    char str1[50];

    printf("Enter something: ");
    gets(str1);

    int length = strlen(str1);

    printf("You entered a string of length %dn", length);

    return 0;
}
Enter something: I love Bangladesh.
You entered a string of length 18

একটা স্ট্রিংকে আরেকটা স্ট্রিং এর সাথে জোড়া লাগানোর জন্য আমরা ব্যবহার করি

এই ফাংশনের প্রোটোটাইপ এরকমঃ

char *strncat(const char *string1, char *string2, size_t n)

উদাহরণঃ

#include "stdio.h"
#include "string.h"

int main(int argc, char* argv[])
{
    char str1[150], str2[100];

    printf("Enter first string: ");
    gets(str1);
    printf("Enter second string: ");
    gets(str2);

    int len = strlen(str2);

    strncat(str1, str2, len);

    printf("%sn", str1);

    return 0;
}
Enter first string: Hello
Enter second string:  World!!
Hello World!!

আরও কিছু ফাংশন আছে যেগুলো আপনারা নিজেরা চেষ্টা করে দেখতে পারেন। প্রথমবার না করলেও সমস্যা নাই। তবে শুধো মনে রাখুন এরকম কয়েকটা ফাংশন আছে।

দুইটা স্ট্রিংকে তুলনা করার সময় প্রথম n অক্ষর তুলনা করার জন্য আমরা strncmp ব্যবহার করি
int strncmp(const char *string1, char *string2, size_t n)

একটা স্ট্রিংয়ের প্রথম n অক্ষর আরেকটা স্ট্রিং এর সাথে জোড়া লাগানোর জন্য আমরা strncpy ব্যবহার করি
char *strncpy(const char *string1,const char *string2, size_t n)

দুইটা স্ট্রিং এর তুলনা করতে আমরা strcasecmp ব্যবহার করি যখন আমরা ছোট বা বড় হাতের অক্ষরকে আলাদা করে বিবেচনা করতে চাই না
int strcasecmp(const char *s1, const char *s2)

দুইটা স্ট্রিংকে তুলনা করার সময় প্রথম n অক্ষর তুলনা করার জন্য আমরা strncasecmp ব্যবহার করি যখন আমরা ছোট বা বড় হাতের অক্ষরকে আলাদা করে বিবেচনা করতে চাই না
int strncasecmp(const char *s1, const char *s2, int n)

Comments

comments

About the author

মারুফ মনিরুজ্জামান

মারুফ মনিরুজ্জামান শাহজালাল বিজ্ঞান ও প্রযুক্তি বিশ্ববিদ্যালয়ে কম্পিউটার বিজ্ঞান বিষয়ে পড়াশোনা করেন। তারপর ঢাকায় প্রথমে সাইক্রাফট, টিটিবিসি এবং কাজ সফটওয়ারে কিছুদিন কাজ করেন। বর্তমানে তিনি মাইক্রোসফটে কর্মরত আছেন।

Leave a Reply