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

C/C++ में strdup() और strndup()

strdup()

फ़ंक्शन strdup() का उपयोग स्ट्रिंग को डुप्लिकेट करने के लिए किया जाता है। यह नल-टर्मिनेटेड बाइट स्ट्रिंग का पॉइंटर लौटाता है।

यहां C भाषा में strdup() का सिंटैक्स है:

char *strdup(const char *string);

यहां C भाषा में strdup() का एक उदाहरण है:

उदाहरण

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

int main() {
   char *str = "Helloworld";
   char *result;
   result = strdup(str);
   printf("स्ट्रिंग: %s", result);
   free(result);  // महत्वपूर्ण: एलोकेटेड मेमोरी फ्री करें
   return 0;
}

आउटपुट

स्ट्रिंग: Helloworld

strndup()

फ़ंक्शन strndup() फ़ंक्शन strdup() के समान काम करता है। यह फ़ंक्शन दिए गए आकार में अधिकतम स्ट्रिंग को डुप्लिकेट करता है यानी फ़ंक्शन में दिया गया आकार। यह भी नल-टर्मिनेटेड बाइट स्ट्रिंग का पॉइंटर लौटाता है।

यहां C भाषा में strndup() का सिंटैक्स है:

char *strndup(const char *string, size_t size);

यहां C भाषा में strndup() का एक उदाहरण है:

उदाहरण

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

int main() {
   char *str = "Helloworld";
   char *result;
   result = strndup(str, 3);
   printf("स्ट्रिंग: %s", result);
   free(result);  // महत्वपूर्ण: एलोकेटेड मेमोरी फ्री करें
   return 0;
}

आउटपुट

स्ट्रिंग: Hel

महत्वपूर्ण नोट्स:

  • दोनों फ़ंक्शंस malloc का उपयोग करके मेमोरी एलोकेट करते हैं - कॉलर को free() करना होगा
  • strdup() POSIX मानक है, C मानक नहीं (लेकिन व्यापक रूप से उपलब्ध)
  • strndup() POSIX.1-2008 से उपलब्ध है
  • यदि मेमोरी एलोकेशन विफल होता है तो NULL लौटाते हैं
  • strndup() में यदि size स्ट्रिंग लंबाई से अधिक है, तो पूरी स्ट्रिंग कॉपी होती है

समतुल्य मैन्युअल कार्यान्वयन

char *my_strdup(const char *s) {
   size_t len = strlen(s) + 1;
   char *p = malloc(len);
   if (p) memcpy(p, s, len);
   return p;
}

char *my_strndup(const char *s, size_t n) {
   size_t len = strnlen(s, n);
   char *p = malloc(len + 1);
   if (p) {
      memcpy(p, s, len);
      p[len] = '\0';
   }
   return p;
}
  1. - C/C++ में strncmp() और strcmp() का अंतर

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

  1. - C/C++ में स्ट्रिंग को रिवर्स करना

    उदाहरण #include <stdio.h> #include <string.h> int main() { char s[50], t; int i = 0, j = 0; printf(\nरिवर्स करने के लिए स्ट्रिंग दर्ज करें: ); gets(s); j = strlen(s) - 1; while (i < j) { t = s[i]; s[i] = s[j]; s[j] = t; i++;

  1. - C++ में strncat() फ़ंक्शन

    strncat() फ़ंक्शन स्ट्रिंग कंकैटनेशन के लिए उपयोग होता है। स्रोत स्ट्रिंग के निर्दिष्ट संख्या में अक्षरों को गंतव्य स्ट्रिंग के अंत में जोड़ता है और गंतव्य स्ट्रिंग का पॉइंटर लौटाता है। <cstring> हेडर में परिभाषित। सिंटैक्स char* strncat(char* dest, const char* src, size_t num); C++ प्रोग्र