Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम: जांचें कि दो स्ट्रिंग्स समान हैं या नहीं

स्ट्रिंग तुलना

C में स्ट्रिंग्स की तुलना के लिए strcmp() फ़ंक्शन का उपयोग किया जाता है (<string.h> में परिभाषित)।

strcmp() व्यवहार

रिटर्न मानअर्थ
0स्ट्रिंग्स समान हैं
< 0str1, str2 से लेक्सिकोग्राफिकली छोटी है
> 0str1, str2 से लेक्सिकोग्राफिकली बड़ी है

केस सेंसिटिविटी

  • strcmp() केस-सेंसिटिव है
  • "Hello" ≠ "hello"
  • केस-असंवेदनशील के लिए: strcasecmp() (POSIX) या _stricmp() (विंडोज़)

C प्रोग्राम

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

int main() {
    char str1[100], str2[100];
    
    printf("पहली स्ट्रिंग दर्ज करें: ");
    fgets(str1, sizeof(str1), stdin);
    str1[strcspn(str1, "\n")] = 0;  // न्यूलाइन हटाएं
    
    printf("दूसरी स्ट्रिंग दर्ज करें: ");
    fgets(str2, sizeof(str2), stdin);
    str2[strcspn(str2, "\n")] = 0;
    
    if (strcmp(str1, str2) == 0)
        printf("हाँ, दोनों स्ट्रिंग्स समान हैं\n");
    else
        printf("नहीं, स्ट्रिंग्स समान नहीं हैं\n");
    
    // अतिरिक्त जानकारी
    int cmp = strcmp(str1, str2);
    if (cmp < 0)
        printf("'%s' '%s' से पहले आता है\n", str1, str2);
    else if (cmp > 0)
        printf("'%s' '%s' के बाद आता है\n", str1, str2);
    
    return 0;
}

नमूना आउटपुट

पहली स्ट्रिंग दर्ज करें: tutorials point
दूसरी स्ट्रिंग दर्ज करें: tutorials point
हाँ, दोनों स्ट्रिंग्स समान हैं
पहली स्ट्रिंग दर्ज करें: world
दूसरी स्ट्रिंग दर्ज करें: World
नहीं, स्ट्रिंग्स समान नहीं हैं
'World' 'world' से पहले आता है

मैन्युअल तुलना (strcmp के बिना)

bool strings_equal(char *s1, char *s2) {
    while (*s1 && *s2) {
        if (*s1 != *s2) return false;
        s1++; s2++;
    }
    return *s1 == *s2;  // दोनों नल टर्मिनेटर पर पहुंचे
}

// केस-असंवेदनशील
bool strings_equal_ci(char *s1, char *s2) {
    while (*s1 && *s2) {
        if (tolower(*s1) != tolower(*s2)) return false;
        s1++; s2++;
    }
    return *s1 == *s2;
}

सामान्य गलतियां

// गलत! पते की तुलना करता है, सामग्री की नहीं
if (str1 == str2)  // गलत

// गलत! = असाइनमेंट है, तुलना नहीं
if (strcmp(str1, str2) = 0)  // गलत

// सही
if (strcmp(str1, str2) == 0)  // सही

सुरक्षित स्ट्रिंग तुलना

// लंबाई-जांच के साथ (बफर ओवरफ्लो रोकथाम)
bool safe_strcmp(char *s1, char *s2, size_t maxlen) {
    for (size_t i = 0; i < maxlen; i++) {
        if (s1[i] != s2[i]) return false;
        if (s1[i] == '\0') return true;
    }
    return true;  // maxlen तक समान
}
  1. दो पत्तियों के लीफ अनुक्रम समान हैं या नहीं जांचने का पायथन प्रोग्राम दो पत्तियों के लीफ अनुक्रम समान हैं या नहीं जांचने का पायथन प्रोग्राम

    मान लीजिए हमारे पास दो बाइनरी ट्री हैं; हमें जांचना है कि क्या दोनों ट्री में बाएं से दाएं लीफ का अनुक्रम समान है। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट True होगा क्योंकि दोनों ट्री के लिए अनुक्रम [2, 6] है। इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे: c := एक नई सूची एक फ़ंक्शन ino

  1. - पायथन में जांचें कि सभी पत्ते एक ही लेवल पर हैं या नहीं

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें जांचना है कि सभी पत्ते (लीफ नोड्स) एक ही लेवल पर हैं या नहीं। उदाहरण के लिए, यदि इनपुट निम्न ट्री है: तो आउटपुट True होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: dfs() फ़ंक्शन परिभाषित करें जो root, d लेता है। यदि root null नहीं है: यदि root

  1. - पायथन में दो स्ट्रिंग्स के भागों के पैलिंड्रोम होने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास समान लंबाई की दो स्ट्रिंग्स S और T हैं, हमें जांचना है कि क्या दोनों स्ट्रिंग्स को एक सामान्य बिंदु पर काटना संभव है ताकि S का पहला भाग और T का दूसरा भाग मिलकर एक पैलिंड्रोम बनाएं। उदाहरण के लिए, यदि इनपुट S = cat, T = pac है, तो आउटपुट True होगा, क्योंकि यदि हम स्ट्रिंग्स को c