स्ट्रिंग तुलना: सी प्रोग्रामिंग

String Comparison C Programming



सी भाषा में एक स्ट्रिंग वर्णों की एक सरणी है, जिसे एक शून्य वर्ण ( 0) के साथ समाप्त किया जाता है। इस गुण के प्रयोग से तार की तुलना की जाती है।







दो तारों की तुलना विभिन्न तरीकों से की जा सकती है। इस ट्यूटोरियल में, पहले हम दो स्ट्रिंग्स की तुलना करने के लिए एक यूजर-डिफ़ाइंड फ़ंक्शन देखेंगे, और फिर हम कुछ बिल्ट-इन लाइब्रेरी फ़ंक्शंस देखेंगे, जिनका उपयोग दो स्ट्रिंग्स की तुलना करने के लिए बहुत आसानी से किया जा सकता है। तो चलो शुरू हो जाओ।



उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन का उपयोग करके स्ट्रिंग तुलना:

हम एक फंक्शन लिखेंगे स्ट्रिंग तुलना () तार की तुलना करने के लिए। हम स्ट्रिंग्स को ट्रैवर्स करते हैं और स्ट्रिंग के प्रत्येक कैरेक्टर की तुलना तब तक करते हैं जब तक कि हम किसी एक के अंत तक नहीं पहुंच जाते या दोनों या एक बेमेल नहीं मिल जाते। यदि ट्रैवर्सल दोनों स्ट्रिंग्स के अंत तक पहुँच जाता है, तो स्ट्रिंग्स का मिलान किया जाता है; अन्यथा, तार बेमेल हैं।



01./*userDefinedFunction.c*/
02.
03.#शामिल
04.
05.NSस्ट्रिंग तुलना करें( charstr1[ ], charstr2[ ] )
06.{
07.NSमैं=0;
08.
09. जबकि(str1[मैं] ==str2[मैं] )
10.
पंद्रह.
16.अगर(str1[मैं] == ' 0' &&str2[मैं] == ' 0' )
17.वापसी 0;
१८.अन्यथा
19.वापसी -1;
बीस.
इक्कीस.}
22.
2. 3.
24.NSमुख्य()
25.{
26.charstr1[30],str2[30];
२७.
28. printf ('पहली स्ट्रिंग दर्ज करें:');
29. स्कैनफ ('% [^एन]% * सी ',str1);
30. printf ('दूसरा स्ट्रिंग दर्ज करें:');
31. स्कैनफ ('% [^एन]% * सी ',str2);
32.
33.अगर(स्ट्रिंग तुलना करें(str1,str2) == 0)
3. 4. printf ('तार बराबर हैं'एन');
35.अन्यथा
36. printf ('तार बराबर नहीं हैं'एन');
37.
38.वापसी 0; 39.}





यहां हम लूप और वेरिएबल का उपयोग करके स्ट्रिंग्स को पार करते हैं मैं . जब वर्ण दोनों स्ट्रिंग्स की समान स्थिति में समान होते हैं, तो का मान मैं 1 (पंक्ति 13) से वृद्धि हुई है। यदि वर्ण समान नहीं हैं (पंक्ति 09) या हम स्ट्रिंग के अंत तक पहुँचते हैं (पंक्ति 11), तो जबकि लूप एक विराम है। थोड़ी देर के लूप के बाद, हम जांचते हैं कि दोनों स्ट्रिंग ट्रैवर्सल अंत तक पहुंचे हैं या नहीं (पंक्ति 16)। यदि ट्रैवर्सल दोनों स्ट्रिंग्स के अंत तक पहुँच जाता है, तो स्ट्रिंग्स समान हैं अन्यथा नहीं।

अंतर्निहित लाइब्रेरी फ़ंक्शंस का उपयोग करके स्ट्रिंग तुलना:

निम्नलिखित पुस्तकालय कार्यों का उपयोग स्ट्रिंग तुलना के लिए किया जा सकता है। सभी कार्यों को में घोषित किया गया है string.h शीर्ष लेख फ़ाइल।



strcmp () फ़ंक्शन:

यह फ़ंक्शन फ़ंक्शन को दिए गए दो स्ट्रिंग्स की तुलना करता है।

वाक्य - विन्यास :

NS strcmp (स्थिरांक char *str1, स्थिरांक char *str2)

प्रतिलाभ की मात्रा: यदि तार बराबर हैं तो 0 लौटाएं। यदि पहली स्ट्रिंग के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग से कम है, तो एक ऋणात्मक पूर्णांक लौटाएं। एक धनात्मक पूर्णांक लौटाएँ यदि पहली स्ट्रिंग के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग से अधिक है। कुछ सिस्टम पहले बेमेल वर्ण के ASCII मान का अंतर लौटाते हैं और कुछ सिस्टम -1 लौटाते हैं यदि पहली स्ट्रिंग के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग से कम है और 1 लौटाता है यदि पहले बेजोड़ वर्ण का ASCII मान पहली स्ट्रिंग दूसरी स्ट्रिंग से बड़ी है।

उदाहरण प्रतिलाभ की मात्रा व्याख्या
strcmp( हैलो वर्ल्ड, हैलो वर्ल्ड ) 0 दो तार समान हैं।
strcmp( नमस्ते, नमस्ते विश्व ) 0 स्ट्रिंग्स की तुलना '' वर्ण तक की जाती है। डिफ़ॉल्ट रूप से पहली स्ट्रिंग '' के साथ समाप्त होती है, और दूसरी स्ट्रिंग में 'हैलो' के बाद '' वर्ण होता है।
strcmp( नमस्ते″,नमस्कार विश्व ) 0 स्ट्रिंग्स की तुलना '' वर्ण तक की जाती है।
strcmp( हैलो वर्ल्ड, हैलो वर्ल्ड ) ऋणात्मक पूर्णांक पहली स्ट्रिंग ('H') के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग ('h') से कम है
strcmp( हैलो वर्ल्ड, हैलो वर्ल्ड ) सकारात्मक पूर्णांक पहली स्ट्रिंग ('h') के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग ('H') से अधिक है

strncmp () फ़ंक्शन:

यह फ़ंक्शन फ़ंक्शन के समान है strcmp () , लेकिन यहां हमें यह निर्दिष्ट करना होगा कि फ़ंक्शन के लिए एक अतिरिक्त तर्क पारित करके कितने बाइट्स की तुलना की जाती है।

वाक्य - विन्यास:

NS strncmp (स्थिरांक char *str1, स्थिरांक char *str2, size_tएन)

प्रतिलाभ की मात्रा: समारोह लौटता है 0 अगर पहला एन दो तारों के वर्ण समान हैं; अन्यथा, यह पहले बेमेल वर्ण के ASCII मान के बीच अंतर के संकेत के आधार पर ऋणात्मक या धनात्मक पूर्णांक देता है।

उदाहरण प्रतिलाभ की मात्रा व्याख्या
strncmp( हैलो वर्ल्ड, हैलो वर्ल्ड, 5 ) 0 पहले 5 अक्षर समान हैं।
strncmp( नमस्ते, नमस्ते विश्व,5 ) 0 पहले 5 अक्षर समान हैं।
strncmp( नमस्ते″,नमस्कार विश्व,8 ) 0 '' दोनों स्ट्रिंग्स में पहले 5 वर्णों के बाद है। इसलिए, तुलना 5 नहीं 8 के बाद रोक दी जाती है।
strncmp( हैलो वर्ल्ड, हैलो वर्ल्ड, 5 ) ऋणात्मक पूर्णांक पहली स्ट्रिंग ('H') के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग ('h') से कम है

strcasecmp () फ़ंक्शन:

यह फ़ंक्शन फ़ंक्शन के समान है strcmp () , लेकिन यहां स्ट्रिंग्स केस संवेदी नहीं हैं।

वाक्य - विन्यास:

NSstrcasecmp(स्थिरांक char *str1, स्थिरांक char *str2)

प्रतिलाभ की मात्रा: के समान strcmp () , लेकिन स्ट्रिंग्स को के रूप में माना जाता है असंवेदनशील मामला .

उदाहरण प्रतिलाभ की मात्रा व्याख्या
स्ट्रैसेसेम्प( हैलो वर्ल्ड, हैलो वर्ल्ड ) 0 दो तार समान हैं।
स्ट्रैसेसेम्प( नमस्ते, नमस्ते विश्व ) 0 स्ट्रिंग्स की तुलना '' वर्ण तक की जाती है। डिफ़ॉल्ट रूप से पहली स्ट्रिंग '' के साथ समाप्त होती है, और दूसरी स्ट्रिंग में 'हैलो' के बाद '' वर्ण होता है।
स्ट्रैसेसेम्प( हैलो वर्ल्ड, हैलो वर्ल्ड ) 0 तार हैं असंवेदनशील मामला। तो, हैलो वर्ल्ड और हैलो वर्ल्ड एक ही हैं।

strncasecmp () फ़ंक्शन:

यह फ़ंक्शन फ़ंक्शन के समान है strncmp () , लेकिन यहां स्ट्रिंग्स केस संवेदी नहीं हैं।

वाक्य - विन्यास:

NSstrncasecmp(स्थिरांक char *str1, स्थिरांक char *str2)

प्रतिलाभ की मात्रा: के समान strncmp () , जब स्ट्रिंग्स को केस-इन-सेंसिटिव माना जाता है।

उदाहरण प्रतिलाभ की मात्रा व्याख्या
strncasecmp( हैलो वर्ल्ड, हैलो वर्ल्ड, 5 ) 0 पहले 5 अक्षर समान हैं।
strncasecmp( नमस्ते, नमस्ते विश्व,5 ) 0 पहले 5 अक्षर समान हैं।
strncasecmp( नमस्ते″,नमस्कार विश्व,8 ) 0 '' दोनों स्ट्रिंग्स में पहले 5 वर्णों के बाद है। इसलिए, तुलना 5 नहीं 8 के बाद रोक दी जाती है।
strncasecmp( हैलो वर्ल्ड, हैलो वर्ल्ड, 5 ) 0 तार हैं असंवेदनशील मामला। तो, नमस्ते और नमस्ते एक ही हैं।

memcmp () फ़ंक्शन:

यह फ़ंक्शन बाइट द्वारा दो मेमोरी ब्लॉक बाइट की तुलना करता है। हमें मेमोरी ब्लॉक के दो पॉइंटर्स और तुलना करने के लिए बाइट्स की संख्या पास करनी होगी।

वाक्य - विन्यास:

NS मेमसीएमपी (स्थिरांक शून्य *str1, स्थिरांक शून्य *str2, size_tएन)

प्रतिलाभ की मात्रा: फ़ंक्शन 0 देता है यदि दो मेमोरी ब्लॉक ( एन बाइट्स) बराबर हैं; अन्यथा, यह बाइट्स की पहली बेमेल जोड़ी के बीच अंतर देता है (बाइट्स को अहस्ताक्षरित चार ऑब्जेक्ट्स के रूप में व्याख्या किया जाता है, फिर इंट में पदोन्नत किया जाता है)।

उदाहरण प्रतिलाभ की मात्रा व्याख्या
मेमसीएमपी( हैलो वर्ल्ड, हैलो वर्ल्ड, 5 ) 0 पहले 5 अक्षर समान हैं।
मेमसीएमपी( नमस्ते″,नमस्कार विश्व,8 ) ऋणात्मक पूर्णांक पहले ६ वर्ण समान हैं, लेकिन ७वाँ वर्ण भिन्न है। यहां तुलना बंद नहीं हुई जैसे strncmp () '' वर्ण प्राप्त करते समय।
मेमसीएमपी( हैलो वर्ल्ड, हैलो वर्ल्ड,11 ) ऋणात्मक पूर्णांक पहली स्ट्रिंग ('H') के पहले बेजोड़ वर्ण का ASCII मान दूसरी स्ट्रिंग ('h') से कम है

उदाहरण:

चर्चा किए गए सभी कार्यों का सी कोड उदाहरण निम्नलिखित है।

01./*stringCompare.c*/
02.
03.#शामिल
04.#शामिल
05.
06.NSमुख्य()
07.{
08. printf ('strcmp ('नमस्ते दुनिया','नमस्ते दुनिया' ) => %dएन', strcmp ( 'नमस्ते दुनिया','नमस्ते दुनिया' ));
09. printf ('strcmp ('नमस्ते','नमस्ते\0दुनिया' ) => %dएन', strcmp ( 'नमस्ते','नमस्ते 0दुनिया' ));
10. printf ('strcmp ('नमस्ते दुनिया','नमस्ते दुनिया' ) => %dएन', strcmp ( 'नमस्ते दुनिया','नमस्ते दुनिया' ) );
ग्यारह. printf ('strcmp ('नमस्ते\0\0\0','नमस्ते\0दुनिया' ) => %dएन', strcmp ( 'नमस्ते 0 0 0','नमस्ते 0दुनिया' ));
12.
१३. printf ('एन---------------एन');
14.
पंद्रह. printf ('strncmp('नमस्ते दुनिया','नमस्ते दुनिया',५ ) => %dएन', strncmp ( 'नमस्ते दुनिया','नमस्ते दुनिया',5 ));
16. printf ('strncmp('नमस्ते','नमस्ते\0दुनिया',५ ) => %dएन', strncmp ( 'नमस्ते','नमस्ते 0दुनिया',5 ));
17. printf ('strncmp('नमस्ते\0\0\0','नमस्ते\0दुनिया',8 ) => %dएन', strncmp ( 'नमस्ते 0 0 0','नमस्ते 0दुनिया',8 ));
१८. printf ('strncmp('नमस्ते दुनिया','नमस्ते दुनिया',५ ) => %dएन', strncmp ( 'नमस्ते दुनिया','नमस्ते दुनिया',5 ));
19.
बीस. printf ('एन---------------एन');
इक्कीस.
22. printf ('स्ट्रैससेम्प ('नमस्ते दुनिया','नमस्ते दुनिया' ) => %dएन',strcasecmp( 'नमस्ते दुनिया','नमस्ते दुनिया' ));
2. 3. printf ('स्ट्रैससेम्प ('नमस्ते','नमस्ते\0दुनिया' ) => %dएन',strcasecmp( 'नमस्ते','नमस्ते 0दुनिया' ));
24. printf ('स्ट्रैससेम्प ('नमस्ते दुनिया','नमस्ते दुनिया' ) => %dएन',strcasecmp( 'नमस्ते दुनिया','नमस्ते दुनिया' ));
25.
26. printf ('एन---------------एन');
२७.
28. printf ('strncasecmp ('नमस्ते दुनिया','नमस्ते दुनिया',५ ) => %dएन',strncasecmp( 'नमस्ते दुनिया','नमस्ते दुनिया',5 ) );
29. printf ('strncasecmp ('नमस्ते','नमस्ते\0दुनिया',५ ) => %dएन',strncasecmp( 'नमस्ते','नमस्ते 0दुनिया',5 ));
30. printf ('strncasecmp ('नमस्ते\0\0\0','नमस्ते\0दुनिया',8 ) => %dएन',strncasecmp( 'नमस्ते 0 0 0','नमस्ते 0दुनिया',8 ));
31. printf ('strncasecmp ('नमस्ते दुनिया','नमस्ते दुनिया',५ ) => %dएन',strncasecmp( 'नमस्ते दुनिया','नमस्ते दुनिया',5 ));
32.
33. printf ('एन---------------एन');
3. 4.
35. printf ('मेमसीएमपी ('नमस्ते दुनिया','नमस्ते दुनिया',५ ) => %dएन', मेमसीएमपी ( 'नमस्ते दुनिया','नमस्ते दुनिया',5 ) );
36. printf ('मेमसीएमपी ('नमस्ते\0\0\0','नमस्ते\0दुनिया',8 ) => %dएन', मेमसीएमपी ( 'नमस्ते 0 0 0','नमस्ते 0दुनिया',8 ));
37. printf ('मेमसीएमपी ('नमस्ते दुनिया','नमस्ते दुनिया',11 ) => %dएन', मेमसीएमपी ( 'नमस्ते दुनिया','नमस्ते दुनिया',ग्यारह ));
38.
39.वापसी 0; 40.}

निष्कर्ष:

तो, इस ट्यूटोरियल में, हमने देखा है कि विभिन्न तरीकों से स्ट्रिंग्स की तुलना कैसे की जा सकती है। जैसा कि हमने देखा, stringCompare () फ़ंक्शन असमान स्ट्रिंग्स के लिए -1 देता है, लेकिन इसे संशोधित किया जा सकता है ताकि यह बेमेल वर्ण का ASCII मान लौटाए। आप इसे अपने कोड में उपयोग कर सकते हैं, जो आपके लिए सबसे उपयुक्त है।