| ENOMEM | Insufficient memory available to allocate duplicate string. |
| strndup() | POSIX.1-2008. |
| strndupa() | GNU. |
| strdup() | SVr4, 4.3BSD-Reno, POSIX.1-2001. |
| strndup() | POSIX.1-2008. |
| strndupa() | GNU. |
NAME
strdup, strndup, strdupa, strndupa - duplicate a string
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <string.h>char *strdup(const char *\ns\n);char *strndup(const char \ns\n[.\nn\n], size_t \nn\n);\n
\nchar *strdupa(const char *\ns\n);\n
\nchar *strndupa(const char \ns\n[.\nn\n], size_t \nn\n);strdup():
\n
_XOPEN_SOURCE >= 500
\n
|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
\n
|| /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCEstrndup():
\n
Since glibc 2.10:
\n
_POSIX_C_SOURCE >= 200809L
\n
Before glibc 2.10:
\n
_GNU_SOURCEstrdupa(), strndupa():
\n
_GNU_SOURCEDESCRIPTION
The strdup() function returns a pointer to a new string which is a duplicate of the string s. Memory for the new string is obtained with malloc(3), and can be freed with free(3).
The strndup() function is similar, but copies at most n bytes. If s is longer than n, only n bytes are copied, and a terminating null byte ('\0') is added.
strdupa() and strndupa() are similar, but use alloca(3) to allocate the buffer.
RETURN VALUE
On success, the strdup() function returns a pointer to the duplicated string. It returns NULL if insufficient memory was available, with errno set to indicate the error.
ERRORS
- ENOMEM
Insufficient memory available to allocate duplicate string.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).
| Interface | Attribute | Value |
| strdup (), strndup (), strdupa (), strndupa () | Thread safety | MT-Safe |
STANDARDS
- strdup()
- strndup()
POSIX.1-2008.
- strdupa()
- strndupa()
GNU.
HISTORY
- strdup()
SVr4, 4.3BSD-Reno, POSIX.1-2001.
- strndup()
POSIX.1-2008.
- strdupa()
- strndupa()
GNU.
SEE ALSO
alloca(3), calloc(3), free(3), malloc(3), realloc(3), string(3), wcsdup(3)