Jump to navigation Jump to search
, , , - duplicate a string
#include <string.h> char *strdup(const char *s); char *strndup(const char *s, size_t n); char *strdupa(const char *s); char *strndupa(const char *s, size_t n);
Feature Test Macro Requirements for(see feature_test_macros(7)):
strdup(): _XOPEN_SOURCE >= 500 || /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L || /* Glibc versions <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE strndup(): Since glibc 2.10: _POSIX_C_SOURCE >= 200809L Before glibc 2.10: _GNU_SOURCE strdupa(), strndupa(): _GNU_SOURCE
Thefunction returns a pointer to a new string which is a duplicate of the string s. Memory for the new string is obtained with , and can be freed with .
Thefunction is similar, but copies at most n bytes. If s is longer than n, only n bytes are copied, and a terminating null byte ( ) is added.
and are similar, but use to allocate the buffer. They are available only when using the GNU GCC suite, and suffer from the same limitations described in .
On success, thefunction returns a pointer to the duplicated string. It returns if insufficient memory was available, with set to indicate the cause of the error.
Insufficient memory available to allocate duplicate string.