C भाषा को strcmp फंक्शनको पूर्ण विश्लेषण | स्ट्रिङ तुलना को आधारभूतदेखि उन्नत प्रयोगसम्म

C भाषा मा स्ट्रिङ तुलना गर्दा, तपाईं के प्रयोग गर्नुहुन्छ?strcmp यो दुई स्ट्रिङ समान छन् कि छैनन् जाँच गर्नको लागि प्रयोग हुने फङ्क्शन हो, जसले प्रोग्रामलाई “यी दुई, समान हो?” भन्ने प्रश्न सोधेको जस्तो देखिन्छ। पक्कै पनि, प्रोग्रामले बिरालो र कुकुर मध्ये कुन सुन्दर छ भन्ने निर्णय गर्न सक्दैन, तर कम्तिमा “HELLO” र “hello” को फरक पत्ता लगाउन सक्छ। यस लेखमा, त्यस्तो strcmp को कार्यविधि, प्रयोग तरिका, र सामान्य गल्ती बुँदाहरूको बारेमा व्याख्या गर्नेछौं।

1. strcmp function भनेको के हो?

strcmpयो फंक्शनले दुई स्ट्रिङलाई एक अक्षरको रूपमा तुलना गरी, परिणामलाई पूर्णांक मानको रूपमा फिर्ता गर्दछ। यो फंक्शन तलको जस्तै कार्य गर्दछ:

  • 0: स्ट्रिङ समान भएको अवस्थामा
  • धनात्मक मान: पहिलो स्ट्रिङ शब्दकोश क्रममा पछाडि (बढी) भएको अवस्थामा
  • ऋणात्मक मान: पहिलो स्ट्रिङ शब्दकोश क्रममा अगाडि (साना) भएको अवस्थामा

यो फंक्शनले स्ट्रिङहरू सबै समान छन् कि छैनन् जाँच्ने मात्र होइन, कुन स्ट्रिङ पहिले आउँछ भन्ने पनि निर्धारण गर्न सक्छ। प्रोग्राममा तलको जस्तै सजिलै प्रयोग गर्न सकिन्छ:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hello";
    char str2[] = "World";

    int result = strcmp(str1, str2);
    printf("strcmp को परिणाम: %dn", result);
    return 0;
}

उपरोक्त कोडले “Hello” र “World” लाई तुलना गरी, परिणाम देखाउँछ। महत्वपूर्ण कुरा के भने, strcmp ले ठूला र साना अक्षरलाई फरक पार्ने कारणले, “HELLO” र “hello” लाई अलग स्ट्रिङको रूपमा मानिन्छ।

2. strcmp function को कार्य सिद्धान्त

strcmpको कार्य सरल भए पनि शक्तिशाली छ। दुई स्ट्रिङलाई पहिलो अक्षरबाट एक-एक गरी तुलना गरिन्छ, र फरक अक्षर देखिएमा त्यसको अन्तर फर्काइन्छ। यो प्रणालीलाई अल्फाबेट क्रमको तुलना पनि लागू गर्न सकिन्छ, उदाहरणका लागि “apple” र “banana” तुलना गर्दा、strcmpले “a” र “b” लाई पहिलोमा तुलना गर्छ, र नकारात्मक मान फर्काउँछ।

तलको भाग、strcmpको प्रणालीलाई अझ बुझ्नको लागि कार्यक्रम उदाहरण हो:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "apple";
    char str2[] = "banana";

    int result = strcmp(str1, str2);
    if (result == 0) {
        printf("स्ट्रिङहरू मिल्छन्।n");
    } else if (result < 0) {
        printf("str1 str2 भन्दा अगाडि छ।n");
    } else {
        printf("str1 str2 भन्दा पछि छ।n");
    }

    return 0;
}

यो कोडमा, “apple” र “banana” तुलना गरिएका छन्। परिणामस्वरूप, strcmp ले “apple” शब्दकोश क्रममा “banana” भन्दा पहिले छ भन्ने बताउँछ। यसले स्ट्रिङलाई शब्दकोश क्रममा क्रमबद्ध गर्दा आदि उपयोगी हुन्छ।

3. strcmp कार्यको प्रयोग उदाहरण

1. प्रयोगकर्ता इनपुटको जाँच

strcmp प्रयोगकर्ता द्वारा इनपुट गरिएको डेटा र मौजुदा डेटा तुलना गर्दा उपयोगी हुन्छ। उदाहरणका लागि, पासवर्ड मिलान जाँचमा प्रयोग गर्न सकिन्छ।

#include <stdio.h>
#include <string.h>

int main() {
    char password[] = "secret";
    char input[256];

    printf("पासवर्ड प्रविष्ट गर्नुहोस्: ");
    scanf("%s", input);

    if (strcmp(password, input) == 0) {
        printf("पासवर्ड मिल्यो।n");
    } else {
        printf("पासवर्ड गलत छ।n");
    }

    return 0;
}

यो प्रोग्रामले इनपुट गरिएको पासवर्ड र सही पासवर्डलाईstrcmp द्वारा तुलना गर्छ।

2. शब्दकोश क्रममा क्रमबद्धता

शब्दकोश क्रममा स्ट्रिङहरू क्रमबद्ध गर्दा पनिstrcmp उपयोगी हुन्छ। धेरै शब्दहरूलाई सॉर्ट गर्दा,strcmp प्रयोग गरेर कुन शब्द पहिले आउनुपर्छ भन्ने निर्धारण गर्न सकिन्छ।

4. strcmp कार्यको विकल्पहरू

strcmp धेरै उपयोगी छ, तर प्रयोग अनुसार अन्य कार्यहरू पनि विचार गर्नुपर्छ।

strncmp: भाग स्ट्रिङको तुलना

strncmp स्ट्रिङको केही भाग मात्र तुलना गर्न चाहँदा प्रयोग गरिन्छ। उदाहरणका लागि, स्ट्रिङको पहिलो 3 अक्षर मात्र तुलना गर्ने अवस्थामा प्रयोग हुन्छ।

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "apple";
    char str2[] = "apricot";

    if (strncmp(str1, str2, 3) == 0) {
        printf("पहिलो ३ अक्षरहरू मिल्छन्।n");
    } else {
        printf("पहिलो ३ अक्षरहरू मिल्दैनन्।n");
    }

    return 0;
}

memcmp: मेमोरीको तुलना

memcmp मेमोरीको सम्पूर्ण भागलाई तुलना गर्न प्रयोग हुने कार्य हो, स्ट्रिङ होइन। बाइनरी डेटा तुलना आवश्यक परेमा उपयोगी हुन्छ।

5. सामान्य त्रुटिहरू

1. ठूला अक्षर र साना अक्षरको भिन्नतालाई विचार नगर्ने

strcmp ठूला अक्षर र साना अक्षरलाई फरक पार्छ। उदाहरणका लागि, “HELLO” र “hello” लाई अलग वस्तुहरूका रूपमा ह्यान्डल गरिन्छ। यदि केस-इन्डिपेन्डेन्ट तुलना आवश्यक छ भने, strcasecmp को प्रयोग विचार गर्नुहोस्।

2. NULL पोइन्टरको तुलना

strcmp द्वारा NULL पोइन्टरलाई तुलना गर्दा क्र्यासको कारण बन सक्छ। तुलना गरिने स्ट्रिङ्ग उचित रूपमा इनिशियलाइज गरिएको छ कि छैन जाँच्नु महत्त्वपूर्ण छ।

सारांश

strcmp C भाषा मा अत्यन्त महत्वपूर्ण फङ्सन हो, जसले स्ट्रिङको तुलना सजिलै गर्न सक्छ। पासवर्डको जाँच वा स्ट्रिङको क्रमबद्धता जस्ता, वास्तविक प्रोग्राममा प्रयोगका उदाहरणहरू देखाउँदै व्याख्या गरियो। प्रोग्रामभित्रको स्ट्रिङ संचालनमा, यो फङ्सनको उपयोगिता कृपया अनुभव गर्नुहोस्।