সমস্যা
রানটাইমে ইনপুট लिये गये স্ট্রিং থেকে সব এক্সট্রা স্পেস রিমুভ করুন হвайল লুপ এবং প্রতিটি ক্যারেক্টার ইন্ডেক্সে স্পেস চেক করে।
সমাধান
নিচের উদাহরণটি বিবেচনা করুন:
এটি একটি দেওয়া স্ট্রিং থেকে সব স্পেস রিমুভ করে। দেওয়া স্ট্রিং: Tutorials Point C Programming। স্পেস রিমুভ করার পর ফলাফল: TutorialsPointCProgramming।
ক্যারেক্টার এর একটি অ্যারেকে স্ট্রিং বলা হয়।
স্ট্রিং ঘোষণা নিচে দেওয়া হলো:
char stringname [size];
উদাহরণস্বরূপ, char string[50]; ৫০ ক্যারেক্টার দৈর্ঘ্যের স্ট্রিং।
ইনিশিয়ালাইজেশন
- সিঙ্গেল ক্যারেক্টার কনস্ট্যান্ট ব্যবহার করে।
char string[10] = { ‘H’, ‘e’, ‘l’, ‘l’, ‘o’ ,‘\0’}
- স্ট্রিং কনস্ট্যান্ট ব্যবহার করে।
char string[10] = “Hello”:;
অ্যাক্সেস
একটি কন্ট্রোল স্ট্রিং “%s” স্ট্রিং অ্যাক্সেস করতে ব্যবহৃত হয় যতক্ষণ না ‘\0’ পাওয়া যায়।
স্ট্রিং-এর মধ্যে এক্সট্রা স্পেস রিমুভ করার লজিক নিম্নরূপ:
len = strlen(string); for(i=0; i<len; i++){ if(string[0]==' '){ for(i=0; i<(len-1); i++) string[i] = string[i+1]; string[i] = '\0'; len--; i = -1; continue; } if(string[i]==' ' && string[i+1]==' '){ for(j=i; j<(len-1); j++){ string[j] = string[j+1]; } string[j] = '\0'; len--; i--; } }
উদাহরণ
স্ট্রিং কনসেপ্ট ব্যবহার করে একটি বাক্যে সব এক্সট্রা স্পেস রিমুভ করার C প্রোগ্রাম:
#include<stdio.h> int main() { char string[200]; int i, j, len; printf("Enter a statement: "); gets(string); len = strlen(string); for(i=0; i<len; i++) { if(string[0]==' ') { for(i=0; i<(len-1); i++) string[i] = string[i+1]; string[i] = '\0'; len--; i = -1; continue; } if(string[i]==' ' && string[i+1]==' ') { for(j=i; j<(len-1); j++) { string[j] = string[j+1]; } string[j] = '\0'; len--; i--; } } printf("\nNew String after removing extra spaces is = %s", string); getch(); return 0; }
আউটপুট
উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের আউটপুটটি দেখায়:
Enter a statement: Welcome to The world of C programming New String after removing extra spaces is = Welcome to The world of C programming