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;
}