দুটি স্ট্রিংকে বিভিন্ন উপায়ে তুলনা করা যায়। এই টিউটোরিয়ালে, প্রথমে, আমরা দুটি স্ট্রিং তুলনা করার জন্য একটি ব্যবহারকারী-সংজ্ঞায়িত ফাংশন দেখতে পাব, এবং তারপর আমরা কিছু অন্তর্নির্মিত লাইব্রেরি ফাংশন দেখতে পাব যা খুব সহজেই দুটি স্ট্রিং তুলনা করতে ব্যবহার করা যেতে পারে। চল শুরু করা যাক.
ব্যবহারকারী-সংজ্ঞায়িত ফাংশন ব্যবহার করে স্ট্রিং তুলনা:
আমরা একটি ফাংশন লিখব stringCompare () স্ট্রিং তুলনা করতে। আমরা স্ট্রিংগুলি অতিক্রম করি এবং স্ট্রিংয়ের প্রতিটি অক্ষর তুলনা করি যতক্ষণ না আমরা কোনও এক বা উভয় বা একের সাথে মিল না পাওয়া যায়। যদি ট্র্যাভারসাল উভয় স্ট্রিংয়ের শেষে পৌঁছে যায়, তাহলে স্ট্রিংগুলি মিলে যায়; অন্যথায়, স্ট্রিংগুলি অসঙ্গতিপূর্ণ।
01।/* ব্যবহারকারী সংজ্ঞায়িত
02।
03।#অন্তর্ভুক্ত
04।
05।intstringCompare( গৃহস্থালিstr1[ ], গৃহস্থালিstr2[ ] )
06।{
07।intআমি=0;
08
09 যখন(str1[আমি] ==str2[আমি] )
10।
পনের।
16।যদি(str1[আমি] == ' 0' &&str2[আমি] == ' 0' )
17।প্রত্যাবর্তন 0;
18।অন্য
19।প্রত্যাবর্তন -ঘ;
বিশ।
একুশ।}
22।
2. 3।
24।intপ্রধান()
25।{
26।গৃহস্থালিstr1[30],str2[30];
27।
28। printf ('প্রথম স্ট্রিং লিখুন:');
29। scanf ('% [n]% * c ',str1);
30। printf ('দ্বিতীয় স্ট্রিং লিখুন:');
31। scanf ('% [n]% * c ',str2);
32।
33।যদি(stringCompare(str1,str2) == 0)
3. 4। printf ('স্ট্রিং সমানn');
35।অন্য
36। printf ('স্ট্রিং সমান নয়n');
37।
38।প্রত্যাবর্তন 0; 39।}
এখানে আমরা যখন লুপ এবং একটি পরিবর্তনশীল ব্যবহার করে স্ট্রিং অতিক্রম করি আমি । যখন উভয় স্ট্রিং একই অবস্থানে অক্ষর সমান হয়, এর মান আমি 1 দ্বারা বৃদ্ধি করা হয় (লাইন 13)। যদি অক্ষর সমান না হয় (লাইন 09) বা আমরা স্ট্রিং (লাইন 11) এর শেষে পৌঁছাই, তবে যখন লুপটি একটি বিরতি। সময় লুপের পরে, আমরা পরীক্ষা করি উভয় স্ট্রিং ট্র্যাভারসাল শেষ পর্যন্ত পৌঁছেছে বা না (লাইন 16)। যদি ট্র্যাভারসাল উভয় স্ট্রিংয়ের শেষে পৌঁছে যায়, তাহলে স্ট্রিং সমান হয় অন্যথায় নয়।
অন্তর্নির্মিত লাইব্রেরি ফাংশন ব্যবহার করে স্ট্রিং তুলনা:
স্ট্রিং তুলনার জন্য নিম্নলিখিত লাইব্রেরি ফাংশন ব্যবহার করা যেতে পারে। সমস্ত ফাংশন ঘোষণা করা হয় string.h হেডার ফাইল।
strcmp () ফাংশন:
এই ফাংশনটি ফাংশনে পাস করা দুটি স্ট্রিংয়ের তুলনা করে।
বাক্য গঠন :
int strcmp (const গৃহস্থালি *str1, const গৃহস্থালি *str2)ফেরত মূল্য: স্ট্রিং সমান হলে 0 ফেরত দিন। প্রথম স্ট্রিংয়ের প্রথম বেমানান অক্ষরের ASCII মান দ্বিতীয় স্ট্রিংয়ের চেয়ে কম হলে একটি নেতিবাচক পূর্ণসংখ্যা ফেরত দিন। যদি প্রথম স্ট্রিংয়ের প্রথম অসামঞ্জস্যপূর্ণ অক্ষরের ASCII মান দ্বিতীয় স্ট্রিংয়ের চেয়ে বেশি হয় তাহলে একটি ইতিবাচক পূর্ণসংখ্যা ফেরত দিন। কিছু সিস্টেম প্রথম অসামঞ্জস্যপূর্ণ অক্ষরের ASCII মানের পার্থক্য ফেরত দেয় এবং কিছু সিস্টেম -1 ফেরত দেয় যদি প্রথম স্ট্রিংয়ের প্রথম অসামঞ্জস্যপূর্ণ অক্ষরের ASCII মান দ্বিতীয় স্ট্রিংয়ের চেয়ে কম হয় এবং যদি প্রথম অসামঞ্জস্যপূর্ণ অক্ষরের ASCII মান 1 হয় প্রথম স্ট্রিং দ্বিতীয় স্ট্রিংয়ের চেয়ে বড়।
উদাহরণ | ফেরত মূল্য | ব্যাখ্যা |
strcmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড ) | 0 | দুটি স্ট্রিং একই। |
strcmp ( হ্যালো, হ্যালো 0 বিশ্ব ) | 0 | স্ট্রিংগুলিকে ' 0' অক্ষর পর্যন্ত তুলনা করা হয়। ডিফল্টভাবে প্রথম স্ট্রিংটি ' 0' দিয়ে শেষ হয়, এবং দ্বিতীয় স্ট্রিংটিতে 'হ্যালো' এর পরে ' 0' অক্ষর থাকে। |
strcmp ( হ্যালো 0 0 0 ″, হ্যালো 0 ওয়ার্ল্ড ) | 0 | স্ট্রিংগুলিকে ' 0' অক্ষর পর্যন্ত তুলনা করা হয়। |
strcmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড ) | Gণাত্মক পূর্ণসংখ্যা | প্রথম স্ট্রিং ('H') এর প্রথম বেমানান অক্ষরের ASCII মান দ্বিতীয় স্ট্রিং ('h') এর চেয়ে কম |
strcmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড ) | ধনাত্নক পূর্ণসংখ্যা | প্রথম স্ট্রিং ('h') এর প্রথম বেমানান অক্ষরের ASCII মান দ্বিতীয় স্ট্রিং ('H') এর চেয়ে বড় |
strncmp () ফাংশন:
এই ফাংশনটি ফাংশনের অনুরূপ strcmp () , কিন্তু এখানে ফাংশনে একটি অতিরিক্ত আর্গুমেন্ট পাস করে কতগুলি বাইট তুলনা করা হয়েছে তা নির্দিষ্ট করতে হবে।
বাক্য গঠন:
int strncmp (const গৃহস্থালি *str1, const গৃহস্থালি *str2, size_tn)ফেরত মূল্য: ফাংশন ফিরে আসে 0 যদি প্রথম n দুটি স্ট্রিং এর অক্ষর সমান; অন্যথায়, এটি প্রথম অসামঞ্জস্যপূর্ণ চরিত্রের ASCII মানের মধ্যে পার্থক্যের চিহ্নের উপর নির্ভর করে নেতিবাচক বা ইতিবাচক পূর্ণসংখ্যা প্রদান করে।
উদাহরণ | ফেরত মূল্য | ব্যাখ্যা |
strncmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 5 ) | 0 | প্রথম ৫ টি অক্ষর একই। |
strncmp ( হ্যালো, হ্যালো 0 বিশ্ব, 5 ) | 0 | প্রথম ৫ টি অক্ষর একই। |
strncmp ( হ্যালো 0 0 0 ″, হ্যালো 0 ওয়ার্ল্ড, 8 ) | 0 | ' 0' উভয় স্ট্রিংয়ে প্রথম 5 টি অক্ষরের পরে। সুতরাং, তুলনা 5 না 8 পরে বন্ধ করা হয়। |
strncmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 5 ) | Gণাত্মক পূর্ণসংখ্যা | প্রথম স্ট্রিং ('H') এর প্রথম বেমানান অক্ষরের ASCII মান দ্বিতীয় স্ট্রিং ('h') এর চেয়ে কম |
strcasecmp () ফাংশন:
এই ফাংশনটি ফাংশনের অনুরূপ strcmp () , কিন্তু এখানে স্ট্রিংগুলি কেস সংবেদনশীল নয়।
বাক্য গঠন:
intstrcasecmp(const গৃহস্থালি *str1, const গৃহস্থালি *str2)ফেরত মূল্য: একই রকম strcmp () , কিন্তু স্ট্রিং হিসাবে গণ্য করা হয় কেস-ইন-সংবেদনশীল ।
উদাহরণ | ফেরত মূল্য | ব্যাখ্যা |
strcasecmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড ) | 0 | দুটি স্ট্রিং একই। |
strcasecmp ( হ্যালো, হ্যালো 0 বিশ্ব ) | 0 | স্ট্রিংগুলিকে ' 0' অক্ষর পর্যন্ত তুলনা করা হয়। ডিফল্টভাবে প্রথম স্ট্রিংটি ' 0' দিয়ে শেষ হয় এবং দ্বিতীয় স্ট্রিংটিতে 'হ্যালো' এর পরে ' 0' অক্ষর থাকে। |
strcasecmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড ) | 0 | স্ট্রিং হয় কেস-ইন-সংবেদনশীল সুতরাং, হ্যালো ওয়ার্ল্ড এবং হ্যালো ওয়ার্ল্ড একই। |
strncasecmp () ফাংশন:
এই ফাংশনটি ফাংশনের অনুরূপ strncmp () , কিন্তু এখানে স্ট্রিংগুলি কেস সংবেদনশীল নয়।
বাক্য গঠন:
intstrncasecmp(const গৃহস্থালি *str1, const গৃহস্থালি *str2)ফেরত মূল্য: একই রকম strncmp () , যখন স্ট্রিং কেস-ইন-সংবেদনশীল হিসাবে গণ্য করা হয়।
উদাহরণ | ফেরত মূল্য | ব্যাখ্যা |
strncasecmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 5 ) | 0 | প্রথম ৫ টি অক্ষর একই। |
strncasecmp ( হ্যালো, হ্যালো 0 বিশ্ব, 5 ) | 0 | প্রথম ৫ টি অক্ষর একই। |
strncasecmp ( হ্যালো 0 0 0 ″, হ্যালো 0 ওয়ার্ল্ড, 8 ) | 0 | ' 0' উভয় স্ট্রিংয়ে প্রথম 5 টি অক্ষরের পরে। সুতরাং, তুলনা 5 না 8 পরে বন্ধ করা হয়। |
strncasecmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 5 ) | 0 | স্ট্রিং হয় কেস-ইন-সংবেদনশীল সুতরাং, হ্যালো এবং হ্যালো একই। |
memcmp () ফাংশন:
এই ফাংশনটি বাইট দ্বারা দুটি মেমরি ব্লক তুলনা করে। আমাদের মেমরি ব্লকের দুটি পয়েন্টার এবং তুলনা করার জন্য বাইটের সংখ্যা পাস করতে হবে।
বাক্য গঠন:
int memcmp (const অকার্যকর *str1, const অকার্যকর *str2, size_tn)ফেরত মূল্য: দুটি মেমরি ব্লক হলে ফাংশন 0 রিটার্ন করে ( n বাইট) সমান; অন্যথায়, এটি প্রথম অসঙ্গতিপূর্ণ বাইটের মধ্যে পার্থক্য ফিরিয়ে দেয় (বাইটগুলি স্বাক্ষরবিহীন চার বস্তু হিসাবে ব্যাখ্যা করা হয়, তারপর int তে উন্নীত হয়)।
উদাহরণ | ফেরত মূল্য | ব্যাখ্যা |
memcmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 5 ) | 0 | প্রথম ৫ টি অক্ষর একই। |
memcmp ( হ্যালো 0 0 0 ″, হ্যালো 0 ওয়ার্ল্ড, 8 ) | Gণাত্মক পূর্ণসংখ্যা | প্রথম 6 অক্ষর একই, কিন্তু 7 ম অক্ষর ভিন্ন। এখানে তুলনা বন্ধ হয়নি strncmp () ' 0' অক্ষর পাওয়ার সময়। |
memcmp ( হ্যালো ওয়ার্ল্ড, হ্যালো ওয়ার্ল্ড, 11 ) | Gণাত্মক পূর্ণসংখ্যা | প্রথম স্ট্রিং ('H') এর প্রথম বেমানান অক্ষরের ASCII মান দ্বিতীয় স্ট্রিং ('h') এর চেয়ে কম |
উদাহরণ:
আলোচনা করা সমস্ত ফাংশনের সি কোড উদাহরণ নিচে দেওয়া হল।
01।/02।
03।#অন্তর্ভুক্ত
04।#অন্তর্ভুক্ত
05।
06।intপ্রধান()
07।{
08 printf ('strcmp ('ওহে বিশ্ব','ওহে বিশ্ব') => %dn', strcmp ( 'ওহে বিশ্ব','ওহে বিশ্ব' ));
09 printf ('strcmp ('হ্যালো','হ্যালো\0বিশ্ব') => %dn', strcmp ( 'হ্যালো','হ্যালো 0বিশ্ব ' ));
10। printf ('strcmp ('ওহে বিশ্ব','ওহে বিশ্ব') => %dn', strcmp ( 'ওহে বিশ্ব','ওহে বিশ্ব' ) );
এগারো। printf ('strcmp ('হ্যালো\0।0।0','হ্যালো\0বিশ্ব') => %dn', strcmp ( 'হ্যালো 0 0 0','হ্যালো 0বিশ্ব ' ));
12।
13। printf ('n---------------n');
14।
পনের। printf ('strncmp ('ওহে বিশ্ব','ওহে বিশ্ব', 5) => %dn', strncmp ( 'ওহে বিশ্ব','ওহে বিশ্ব',5 ));
16। printf ('strncmp ('হ্যালো','হ্যালো\0বিশ্ব', 5) => %dn', strncmp ( 'হ্যালো','হ্যালো 0বিশ্ব ',5 ));
17। printf ('strncmp ('হ্যালো\0।0।0','হ্যালো\0বিশ্ব', 8) => %dn', strncmp ( 'হ্যালো 0 0 0','হ্যালো 0বিশ্ব ',8 ));
18। printf ('strncmp ('ওহে বিশ্ব','ওহে বিশ্ব', 5) => %dn', strncmp ( 'ওহে বিশ্ব','ওহে বিশ্ব',5 ));
19।
বিশ। printf ('n---------------n');
একুশ।
22। printf ('strcasecmp ('ওহে বিশ্ব','ওহে বিশ্ব') => %dn',strcasecmp( 'ওহে বিশ্ব','ওহে বিশ্ব' ));
2. 3। printf ('strcasecmp ('হ্যালো','হ্যালো\0বিশ্ব') => %dn',strcasecmp( 'হ্যালো','হ্যালো 0বিশ্ব ' ));
24। printf ('strcasecmp ('ওহে বিশ্ব','ওহে বিশ্ব') => %dn',strcasecmp( 'ওহে বিশ্ব','ওহে বিশ্ব' ));
25।
26। printf ('n---------------n');
27।
28। printf ('strncasecmp ('ওহে বিশ্ব','ওহে বিশ্ব', 5) => %dn',strncasecmp( 'ওহে বিশ্ব','ওহে বিশ্ব',5 ) );
29। printf ('strncasecmp ('হ্যালো','হ্যালো\0বিশ্ব', 5) => %dn',strncasecmp( 'হ্যালো','হ্যালো 0বিশ্ব ',5 ));
30। printf ('strncasecmp ('হ্যালো\0।0।0','হ্যালো\0বিশ্ব', 8) => %dn',strncasecmp( 'হ্যালো 0 0 0','হ্যালো 0বিশ্ব ',8 ));
31। printf ('strncasecmp ('ওহে বিশ্ব','ওহে বিশ্ব', 5) => %dn',strncasecmp( 'ওহে বিশ্ব','ওহে বিশ্ব',5 ));
32।
33। printf ('n---------------n');
3. 4।
35। printf ('memcmp ('ওহে বিশ্ব','ওহে বিশ্ব', 5) => %dn', memcmp ( 'ওহে বিশ্ব','ওহে বিশ্ব',5 ) );
36। printf ('memcmp ('হ্যালো\0।0।0','হ্যালো\0বিশ্ব', 8) => %dn', memcmp ( 'হ্যালো 0 0 0','হ্যালো 0বিশ্ব ',8 ));
37। printf ('memcmp ('ওহে বিশ্ব','ওহে বিশ্ব', 11) => %dn', memcmp ( 'ওহে বিশ্ব','ওহে বিশ্ব',এগারো ));
38।
39।প্রত্যাবর্তন 0; 40।}
উপসংহার:
সুতরাং, এই টিউটোরিয়ালে, আমরা দেখেছি কিভাবে স্ট্রিংগুলিকে বিভিন্ন উপায়ে তুলনা করা যায়। আমরা দেখেছি, stringCompare () ফাংশন অসম স্ট্রিংগুলির জন্য -1 প্রদান করে, কিন্তু এটি পরিবর্তন করা যেতে পারে যাতে এটি অসামঞ্জস্যপূর্ণ অক্ষরের ASCII মান প্রদান করে। আপনি এটি আপনার কোডে ব্যবহার করতে পারেন, যা আপনার জন্য সবচেয়ে উপযুক্ত।