সি পোগ্রামিং – স্ট্রিং
স্ট্রিং হচ্ছে কারেকটার সেট। একটা ওয়ার্ড, একটা বাক্য, একটা প্র্যারাগ্রাফ, সব গুলোই স্ট্রিং। যেমন Hello World একটা স্ট্রিং। আবার hello ও একটা স্ট্রিং। world ও একটা স্ট্রিং। যখন শুধু একটা বর্ণ, তখন তা কারেকটার।
আগে বলেছি স্ট্রিং হচ্ছে কারেকটার সেট। হ্যা, একটা one-dimensional কারেকটার অ্যারে হচ্ছে স্ট্রিং। লেখাটি পড়ার আগে অ্যারে/Array সম্পর্কে ধারণা থাকা লাগবে। অ্যারে সম্পর্কে এ লেখা থেকে জানা যাবে। একটা স্ট্রিং নিচের মত করে ডিক্লেয়ার করা হয়ঃ
char string[50] = “This is a static string”;
আর প্রিন্ট করার জন্য লিখতে হয়ঃ
printf(“%sn”, string);
আমরা একটা স্ট্রিং ডিক্লেয়ার এবং তা প্রিন্ট করার জন্য একটা প্রোগ্রাম লিখে ফেলিঃ
#include <stdio.h>
int main ()
{
//!showArray(string)
char string[10] = "Hello";
printf("%s\n", string);
return 0;
}
copy C Code & Paste it below the Compiler & Run

Hello এ স্ট্রিংটা প্রিন্ট করার জন্য আমরা 10 সাইজের একটা কারেকটার অ্যারে ডিক্লেয়ার করেছি, কিন্তু আমাদের বর্ণ মাত্র ৫টা। তাই আমাদের এত বড় অ্যারে ডিক্লেয়ার করার দরকার নেই। তার জন্য আমরা 5 সাইজের একটা অ্যারে ডিক্লেয়ার করলেই হবে। এখানে বলে রাখা ভালো যে, আমরা যখন একটা স্ট্রিং ডিক্লেয়ার করব, তখন সব গুলো বর্ণের শেষে অটোমেটিক্যালি একটা null character ” যুক্ত হবে। নিচের ছবিটা দেখি।

Hello স্ট্রিং এর জন্য আমাদের টোটাল তাহলে ৬ সাইজের একটা অ্যারে দরকার। Hello এর পাঁচটা বর্ণ এবং একটা নাল কারেকটার। আবার আমরা জানি অ্যারে এর indexing শুরু হয় ০ থেকে। তাহলে আমাদের Hello স্ট্রিং নিচের মত করেও ডিক্লেয়ার করতে পারিঃ
char string[5] = “Hello”; // অ্যারের সাইজ বাড়াতে হবে, কেননা একটা null character ” যুক্ত হবে।
যেমনঃ এরূপ-
char string[6] = “Hello”;
আবার আমরা চাইলে কত সাইজের অ্যারে ব্যবহার করব তা রান টাইমের উপর ছেড়ে দিতে পারি। প্রোগ্রাম অটোম্যাটিক্যালি একটা সাইজ এসাইন করে দিবে। তার জন্য লিখবঃ
char string[] = “Hello”;
আমরা স্ট্রিং ডিক্লেয়ার আগেই করেছি এবং এখন ইনপুট ও আউটপুটের জন্য একটা প্রোগ্রাম লিখে ফেলিঃ এখানে gets and puts কিওয়ার্ড ব্যবহার করব।
gets(str);
puts(str);
#include <stdio.h>
int main() {
//!showArray(str)
char str[20]; // Declare a character array to store the string
// Read a string from the user using gets
printf("Enter a string: ");
gets(str); // Note: gets is not safe and should be used with caution
// Display the string using puts
printf("You entered: ");
puts(str);
return 0;
}
copy C Code & Paste it below the Compiler & Run

String Without Library Function
#include <stdio.h>
// Function to calculate the length of a string
int stringLength(const char* str) {
int length = 0;
while (str[length] != '\0') {
length++;
}
return length;
}
// Function to copy one string to another
void stringCopy(char* dest, const char* src) {
int i = 0;
while (src[i] != '\0') {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
}
// Function to concatenate two strings
void stringConcatenate(char* dest, const char* src) {
int destLength = stringLength(dest);
int i = 0;
while (src[i] != '\0') {
dest[destLength + i] = src[i];
i++;
}
dest[destLength + i] = '\0';
}
// Function to compare two strings
int stringCompare(const char* str1, const char* str2) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
int main() {
//!showArray(str1)
//!showArray(str2)
//!showArray(str3)
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10] = "Anis";
// Calculate and print the length of str1
int length1 = stringLength(str1);
printf("Length of str1: %d\n", length1);
// Copy str1 to str2 and print str2
stringCopy(str2, str1);
printf("Copied string to str2: %s\n", str2);
// Concatenate str1 and str2 and print str2
stringConcatenate(str1, str3);
printf("Concatenated string: %s\n" , str1);
// Compare str1 and str2 and print the result
int result = stringCompare(str1, str2);
if (result == 0) {
printf("str1 and str2 are equal\n");
} else if (result < 0) {
printf("str1 is less than str2\n");
} else {
printf("str1 is greater than str2\n");
}
return 0;
}
copy C Code & Paste it below the Compiler & Run

এবার আমরা একটা প্রোগ্রাম লিখব, যেখানে একটা বাক্য থেকে কোন একটা বর্ণ কতবার আছে, তা বের করতে পারব। ইনপুট হিসেবে একটা বাক্য নিবে। তারপর নিবে কোন বর্ণটার সংখ্যা বের করতে হবে, তা। এবং পরে ঐ বর্ণটা কতবার রয়েছে, তা প্রিন্ট করবেঃ
#include <stdio.h>
int main(){
//!showArray(sentence)
char sentence[30];
char character;
int i,count=0;
printf("Enter a sentence: ");
gets(sentence);
printf("Enter a character to find frequency: ");
scanf("%c",&character);
for(i=0; sentence[i]!='\0';++i)
{
if(character==sentence[i])
++count;
}
printf("Frequency of %c = %d", character, count);
return 0;
}
ccopy C Code & Paste it below the Compiler & Run

উপরের প্রোগ্রামটাতে প্রথমে ইজার থেকে একটা বাক্য ইনপুট নিচ্ছে gets দিয়ে। এরপর ইনপুট নিচ্ছে কোন কারেকটার / বর্ণটি কত বার রয়েছে, তা। এরপর for লুপ চালিয়ে আমরা বর্ণটি কাউন্ট করেছি। এরপর শেষে বর্ণটি কতবার রয়েছে, তা প্রিন্ট করেছি। for লুপে আমরা sentence[i]!=’\0′ ব্যবহার করেছি। এর মানে হচ্ছে for লুপটি ততক্ষণ পর্যন্ত চলবে, যতক্ষণ না নাল কেরেক্টার পায়। count এর সাহায্যে sentence এর ফ্রিকোয়েন্সি বের করব।
String With Library Function
#include <stdio.h>
#include <string.h>
int main() {
//!showArray(str1)
//!showArray(str2)
char str1[10] = "Hello";
char str2[10] = "World";
char str3[10] = "Anis";
// Calculate and print the length of str1 using strlen
int length1 = strlen(str1);
printf("Length of str1: %d\n", length1);
// Copy str1 to str2 using strcpy and print str2
strcpy(str2, str1);
printf("Copied string: %s\n", str2);
// Concatenate str1 and str2 using strcat and print str2
strcat(str1, str3);
printf("Concatenated string: %s\n", str1);
// Compare str1 and str2 using strcmp and print the result
int result = strcmp(str1, str2);
if (result == 0) {
printf("str1 and str2 are equal\n");
} else if (result < 0) {
printf("str1 is less than str2\n");
} else {
printf("str1 is greater than str2\n");
}
return 0;
}
copy C Code & Paste it below the Compiler & Run

