আজ আমরা প্রথমেই দেখবো একটি স্ট্রিং-এর দৈর্ঘ্য বের করার ফাংশনটি – 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; }
আউটপুটঃ
খেয়াল কর, প্রথম প্যারামিটারের মধ্যেই দ্বিতীয় প্যারামিটারের স্ট্রিং-টা গিয়ে বসে যাচ্ছে। এটা বারবার ভুলে যায়! 😛
দু’টি স্ট্রিং জোড়া লাগানো – 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; }
একটি ক্যারেক্টার অ্যারের সব ইনডেক্সে একই উপাদান রাখা – 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; }
আউটপুটঃ
আমরা যদি 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; }
এখানে 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; }
আউটপুটঃ
আরও বেশ কিছু ফাংশন আছে এই হেডার ফাইলে। তবে সেগুলো সচরাচর প্রয়োজন হয় না। এগুলো সম্পর্কে জানতে পারবে এই লিংকে।