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

C भाषा में strlen() लाइब्रेरी फंक्शन का प्रदर्शन


strlen() फंक्शन

strlen() (string.h) स्ट्रिंग की लंबाई (नल टर्मिनेटर '\0' से पहले के वर्णों की संख्या) लौटाता है।

सिंटैक्स

size_t strlen(const char *str);
  • रिटर्न प्रकार: size_t (अनसाइन्ड पूर्णांक)
  • पैरामीटर: const char* - स्ट्रिंग संशोधित नहीं होती
  • समय जटिलता: O(n) - हर बार पूरी स्ट्रिंग स्कैन करता है

उदाहरण 1: strlen() उपयोग

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

int main() {
    char name[100];
    
    printf("अपना नाम दर्ज करें: ");
    fgets(name, sizeof(name), stdin);
    
    // fgets नई लाइन शामिल करता है, हटाएं
    size_t len = strlen(name);
    if (len > 0 && name[len-1] == '\n')
        name[--len] = '\0';
    
    printf("आपका नाम: %s\n", name);
    printf("स्ट्रिंग लंबाई: %zu\n", len);
    
    return 0;
}

आउटपुट

अपना नाम दर्ज करें: Tutorialspoint
आपका नाम: Tutorialspoint
स्ट्रिंग लंबाई: 14

उदाहरण 2: strlen() के बिना लंबाई ज्ञात करना

#include <stdio.h>

size_t my_strlen(const char *str) {
    size_t len = 0;
    while (str[len] != '\0')
        len++;
    return len;
}

int main() {
    char str[100];
    printf("स्ट्रिंग दर्ज करें: ");
    scanf("%99s", str);  // स्पेस नहीं पढ़ेगा
    
    printf("लंबाई (strlen): %zu\n", strlen(str));
    printf("लंबाई (my_strlen): %zu\n", my_strlen(str));
    return 0;
}

महत्वपूर्ण बिंदु

⚠ strlen() की सामान्य गलतियाँ

  • लूप में strlen(): for(i=0; i<strlen(s); i++) → O(n²)। लंबाई पहले निकालकर वेरिएबल में रखें।
  • बफर आकार vs लंबाई: sizeof(arr) सरणी का कुल आकार देता है, strlen(arr) केवल डेटा लंबाई।
  • नल टर्मिनेटर: strlen '\0' नहीं गिनता; sizeof गिनता है यदि सरणी में हो।
  • पॉइंटर पर sizeof: sizeof(ptr) पॉइंटर का आकार देता है (4/8 बाइट्स), स्ट्रिंग लंबाई नहीं।

आकार तुलना


char str[] = "Hello";   // सरणी: आकार 6 (H,e,l,l,o,\0)
char *ptr = "Hello";    // पॉइंटर: आकार 8 (64-बिट पर)

printf("sizeof(str) = %zu\n", sizeof(str));   // 6
printf("strlen(str) = %zu\n", strlen(str));   // 5
printf("sizeof(ptr) = %zu\n", sizeof(ptr));   // 8
printf("strlen(ptr) = %zu\n", strlen(ptr));   // 5

प्रदर्शन टिप


// खराब: O(n²)
for (int i = 0; i < strlen(s); i++) { ... }

// अच्छा: O(n)
size_t len = strlen(s);
for (int i = 0; i < len; i++) { ... }

// बेहतर: पॉइंटर पुनरावृत्ति
for (const char *p = s; *p; p++) { ... }

सुरक्षित विकल्प: strnlen()


#include <string.h>
// अधिकतम maxlen वर्ण जांचता है, नल टर्मिनेटर न मिलने पर भी सुरक्षित
size_t strnlen(const char *str, size_t maxlen);

बफर ओवरफ्लो सुरक्षा के लिए उपयोगी जब स्ट्रिंग नल-टर्मिनेटेड होने की गारंटी न हो।

  1. - C प्रोग्राम: atexit() फंक्शन की जांच

    atexit() एक फंक्शन है जो उपयोगकर्ता को एक फंक्शन रजिस्टर करने की अनुमति देता है जिसे प्रोग्राम समाप्ति के आधार पर कॉल किया जाना है। यह एक प्रीडिफाइंड फंक्शन है जो stdlib हेडर फाइल में शामिल है। उदाहरण 1 #include<stdio.h> #include<stdlib.h> void welcome(void){ printf(Welcome to N

  1. C प्रोग्राम: strncmp लाइब्रेरी फंक्शन का उपयोग करके दो स्ट्रिंग्स की तुलना करना C प्रोग्राम: strncmp लाइब्रेरी फंक्शन का उपयोग करके दो स्ट्रिंग्स की तुलना करना

    strncmp string.h फाइल में मौजूद एक प्रीडिफाइंड लाइब्रेरी फंक्शन है, जिसका उपयोग दो स्ट्रिंग्स की तुलना करने और यह प्रदर्शित करने के लिए किया जाता है कि कौन सी स्ट्रिंग बड़ी है। strcmp फंक्शन (स्ट्रिंग तुलना) यह फंक्शन 2 स्ट्रिंग्स की तुलना करता है। यह दोनों स्ट्रिंग्स में पहले दो नॉन-मैचिंग कैरेक्

  1. C प्रोग्राम: पॉइंटर्स पर उदाहरणों का प्रदर्शन C प्रोग्राम: पॉइंटर्स पर उदाहरणों का प्रदर्शन

    पॉइंटर एक वेरिएबल है जो दूसरे वेरिएबल का एड्रेस स्टोर करता है। पॉइंटर्स की विशेषताएं पॉइंटर मेमोरी स्पेस बचाता है। मेमोरी लोकेशन तक सीधी पहुंच के कारण पॉइंटर का एक्जीक्यूशन टाइम तेज होता है। पॉइंटर्स की मदद से मेमोरी को कुशलतापूर्वक एक्सेस किया जाता है, यानी मेमोरी डायनामिकली एलोकेट और डीएलोकेट ह