তিনটি স্ট্রিং: text, oldWord, newWord দেওয়া আছে। text-এ oldWord-এর সব অকারেন্স newWord দিয়ে রিপ্লেস করতে হবে।
উদাহরণ
ইনপুট: text="I am learning programming", oldWord="learning", newWord="practicing"
আউটপুট: "I am practicing programming"
পদ্ধতি
- প্রথমে oldWord-এর সংখ্যা কাউন্ট করা হয় (strstr ব্যবহার করে)।
- নতুন স্ট্রিংয়ের জন্য মেমরি অ্যালোকেট করা হয় (লেন্থ অ্যাডজাস্ট করে)।
- দ্বিতীয় পাসে text ট্রাভার্স করে oldWord পেলে newWord কপি করা হয়, অন্যথায় ক্যারেক্টার কপি।
C প্রোগ্রাম উদাহরণ
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void replaceWordInText(const char* text, const char* oldWord, const char* newWord) {
int i=0, cnt=0;
int len1=strlen(newWord), len2=strlen(oldWord);
for (i=0; text[i]; i++)
if (strstr(&text[i], oldWord) == &text[i]) { cnt++; i += len2-1; }
char* newString = (char*)malloc(i + cnt*(len1-len2) + 1);
i = 0;
while (*text) {
if (strstr(text, oldWord) == text) {
strcpy(&newString[i], newWord);
i += len1; text += len2;
} else newString[i++] = *text++;
}
printf("New String: %s\n", newString);
}
int main() {
char str[] = "I am learning programming";
char c[] = "learning", d[] = "practicing";
printf("Original: %s\n", str);
replaceWordInText(str, c, d);
return 0;
}
আউটপুট
Original string: I am learning programming New String: I am practicing programming