সূচিপত্র

আজ আমরা প্রথমেই দেখবো একটি স্ট্রিং-এর দৈর্ঘ্য বের করার ফাংশনটি – strlen(str)

strlen() ফাংশনটির প্যারামিটার হিসেবে দিতে হয় স্ট্রিং-টির অ্যাড্রেস। এটা নিয়ে মাথা ঘামানোর দরকার নেই। প্যারানথেসিসের মধ্যে স্ট্রিং-টির নাম লিখে দিলেই হয়ে যাবে!

#include <stdio.h>
#include <string.h> // important!!
int main() {
    char str[100] = "I love Bangladesh!";
    int len = strlen(str);
    printf("Length = %d\n", len);
    return 0;
}

এবার দেখা যাক একটি স্ট্রিং-এর মধ্যে আরেকটি স্ট্রিং কপি করে দেওয়ার ফাংশন – strcpy(str1, str2)

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

#include <stdio.h>
#include <string.h> // important!!
int main() {
    char str1[100] = "I love Bangladesh";
    char str2[100] = "I love my country, Bangladesh";
    printf("Before copying:\nString 1 = %s\nString 2 = %s\n", str1, str2);
    strcpy(str1, str2);
    printf("After copying:\nString 1 = %s\nString 2 = %s\n", str1, str2);
    return 0;
}

আউটপুটঃ

Snap 2015-08-07 at 12.21.02

খেয়াল কর, প্রথম প্যারামিটারের মধ্যেই দ্বিতীয় প্যারামিটারের স্ট্রিং-টা গিয়ে বসে যাচ্ছে। এটা বারবার ভুলে যায়! 😛

দু’টি স্ট্রিং জোড়া লাগানো – strcat(str1, str2);

এটি করলে প্রথম স্ট্রিং-এর শেষে দ্বিতীয় স্ট্রিং-টি বসে যাবে! কোড লিখেই দেখা যাক।

#include <stdio.h>
#include <string.h> // important!!
int main() {
    char first[20], last[20], full[40];
    printf("First name please : ");
    scanf("%s", first);
    printf("Last name please : ");
    scanf("%s", last);
    strcpy(full, first); // prothome full-er moddhe first name ta boshalam
    strcat(full, " "); // ebar shathe ekta space jukto korlam
    strcat(full, last); // ebar last name tao jog kore dilam!

    printf("Your full name : %s\n", full);
    return 0;
}

আউটপুটঃ
Snap 2015-08-07 at 12.25.22

একটি ক্যারেক্টার অ্যারের সব ইনডেক্সে একই উপাদান রাখা – memset (str, ‘character’, jotoghorkortechai)

ধর আমরা চাই, একটি অ্যারের প্রথম পাঁচটি ইনডেক্সে @ রাখতে। তাহলে আমরা লিখবোঃ memset( str, ‘@’, 5);

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "ABCDE FGHIJ"; // ekhane ABCDE ongsho ta replace kore dibo
    memset(str, '@', 5);
    puts(str); // ekta notun funtion shikhlam print korar ;)
    return 0;
}

আউটপুটঃ

Snap 2015-08-07 at 22.30.03

আমরা যদি ABCDE রিপ্লেস না করে FGHIJ রিপ্লেস করতে চাইতাম, তাহলে লিখতাম memset(str+6, ‘@’, 5);

#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "ABCDE FGHIJ"; // ekhane ABCDE ongsho ta replace kore dibo
    memset(str+6, '@', 5);
    puts(str); // ekta notun funtion shikhlam print korar ;)
    return 0;
}

Snap 2015-08-07 at 22.32.25

এখানে str লিখে আসলে আমরা str[0]-এর অ্যাড্রেসটা পাঠায়। str+6 লেখার কারণে অ্যাড্রেস যাচ্ছে str[6]-এর! অ্যাড্রেস কী – সেটা আমরা বিস্তারিত জানবো পয়েন্টার নিয়ে পড়ার সময়।

দুইটা স্ট্রিং একই নাকি চেক করা – strcmp(str1, str2)

এই ফাংশনটা তিন ধরণের ভ্যালু রিটার্ন করেঃ

  • 0 – যদি স্ট্রিং দুইটা একই হয়।
  • -1 – যদি লেক্সোগ্রাফিকালি প্রথম স্ট্রিং-টা ছোট হয়।
  • 1 – যদি লেক্সোগ্রাফিকালি প্রথম স্ট্রিং-টা বড় হয়।

লেক্সোগ্রাফিকালি কথাটির অর্থ গুগল থেকে জেনে নাও!

#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "aaaa";
    char str2[] = "aaaa";
    char str3[] = "aabaa";
    printf("%d %d %d", strcmp(str1, str2) , strcmp(str1,str3) , strcmp(str3, str1));
    return 0;
}

আউটপুটঃ

Snap 2015-08-07 at 22.38.47

আরও বেশ কিছু ফাংশন আছে এই হেডার ফাইলে। তবে সেগুলো সচরাচর প্রয়োজন হয় না। এগুলো সম্পর্কে জানতে পারবে এই লিংকে

Muntasir Wahed

Muntasir Wahed

System Administrator at স্বশিক্ষা.com
Jack of all trades, master of none.
Muntasir Wahed
Muntasir Wahed