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

C भाषा में memcmp और memicmp फंक्शन्स में अंतर

memcmp() और memicmp() दो मेमोरी ब्लॉक्स के पहले n बाइट्स की तुलना करते हैं।

मुख्य अंतर

फंक्शनतुलना प्रकारकेस सेंसिटिविटी
memcmp()अनसाइन्ड कैरेक्टर्स के रूप मेंकेस-सेंसिटिव
memicmp()कैरेक्टर्स के रूप मेंकेस-इनसेंसिटिव (अपर/लोअर केस इग्नोर करता है)

रिटर्न मान

  • 0 - दोनों मेमोरी बफर समान हैं
  • > 0 - पहला बफर दूसरे से बड़ा है
  • < 0 - पहला बफर दूसरे से छोटा है

प्रोग्राम

#include <stdio.h> 
#include <string.h> 
#include <strings.h>  // memicmp के लिए (POSIX)

void check(int x) {
    if(x == 0)
        printf("Buffers st1 and st2 hold same data\n");
    else if(x > 0)
        printf("Buffer st1 is bigger than buffer st2\n");
    else
        printf("Buffer st1 is less than buffer st2\n");
}

int main() {
    char st1[] = "This is C Programming language";
    char st2[] = "this is c programming";
    int result;
    
    // memcmp - केस सेंसिटिव
    result = memcmp(st1, st2, strlen(st2));
    printf("1. Result using memcmp: ");
    check(result);
    
    // memicmp - केस इनसेंसिटिव (POSIX, गैर-मानक)
    result = memicmp(st1, st2, strlen(st2));
    printf("2. Result using memicmp: ");
    check(result);
    
    return 0;
}

आउटपुट

1. Result using memcmp: Buffer st1 is less than buffer st2
2. Result using memicmp: Buffers st1 and st2 hold same data

व्याख्या

  • memcmp: 'T' (ASCII 84) < 't' (ASCII 116), इसलिए पहला बफर "कम" माना जाता है।
  • memicmp: केस इग्नोर करता है, इसलिए दोनों स्ट्रिंग्स समान मानी जाती हैं।

पोर्टेबिलिटी नोट

  • memcmp - ANSI C स्टैंडर्ड (ISO C), सभी प्लेटफॉर्म्स पर उपलब्ध।
  • memicmp - माइक्रोसॉफ्ट/बोर्लैंड एक्सटेंशन, POSIX में strncasecmp के समान। Linux/GCC में strncasecmp उपयोग करें।

पोर्टेबल विकल्प

// केस-इनसेंसिटिव मेमोरी तुलना (पोर्टेबल)
int memcasecmp(const void *s1, const void *s2, size_t n) {
    const unsigned char *p1 = s1, *p2 = s2;
    for(size_t i = 0; i < n; i++) {
        unsigned char c1 = tolower(p1[i]);
        unsigned char c2 = tolower(p2[i]);
        if(c1 != c2) return c1 - c2;
    }
    return 0;
}

सारांश

  • बाइनरी डेटा तुलना के लिए memcmp उपयोग करें।
  • टेक्स्ट तुलना के लिए जहां केस मैटर नहीं करता, strncasecmp (POSIX) या कस्टम फंक्शन उपयोग करें।
  • memicmp गैर-मानक है, पोर्टेबल कोड में बचें।
  1. जावास्क्रिप्ट में फंक्शन्स और मेथड्स में क्या अंतर है? जावास्क्रिप्ट में फंक्शन्स और मेथड्स में क्या अंतर है?

    जावास्क्रिप्ट में फंक्शन्स और मेथड्स समान हैं, लेकिन एक मेथड एक फंक्शन है, जो एक ऑब्जेक्ट की प्रॉपर्टी है।निम्नलिखित जावास्क्रिप्ट में फंक्शन का एक उदाहरण है:function functionname(param1, param2){    // code }उदाहरणमेथड एक ऑब्जेक्ट से जुड़ा फंक्शन है। निम्नलिखित जावास्क्रिप्ट में मेथड का ए

  1. जावास्क्रिप्ट में कस्टम और बिल्ट-इन फंक्शन्स में क्या अंतर है? जावास्क्रिप्ट में कस्टम और बिल्ट-इन फंक्शन्स में क्या अंतर है?

    जावास्क्रिप्ट में कस्टम फंक्शन्स यूजर-डिफाइन्ड फंक्शन्स हैं। जावास्क्रिप्ट हमें अपने खुद के फंक्शन्स लिखने की अनुमति देता है। निम्नलिखित सिंटैक्स है:सिंटैक्स<script>    <!--       function functionname(parameter-list)       {       &nbs

  1. C भाषा में putw() और getw() फंक्शन्स C भाषा में putw() और getw() फंक्शन्स

    फाइल रिकॉर्ड्स का संग्रह है या हार्ड डिस्क पर एक स्थान है जहां डेटा स्थायी रूप से संग्रहीत होता है। फाइलों पर ऑपरेशन्स C प्रोग्रामिंग भाषा में फाइलों पर ऑपरेशन्स निम्नलिखित हैं: फाइल का नामकरण फाइल खोलना फाइल से पढ़ना फाइल में लिखना फाइल बंद करना सिंटैक्स फाइल खोलने का सिंटैक्स निम्नलिखित है: F