NAME
strdup
, strndup
— save a copy of a
string
SYNOPSIS
#include
<string.h>
char *
strdup
(const
char *s);
char *
strndup
(const
char *s, size_t
maxlen);
DESCRIPTION
The
strdup
()
function allocates sufficient memory for a copy of the string
s, does the copy, and returns a pointer to it. The
pointer may subsequently be used as an argument to the function
free(3).
The
strndup
()
function behaves similarly to strdup
but only copies
up to maxlen characters from s.
The resulting string is always NUL-terminated.
If the memory allocation fails, NULL
is
returned.
EXAMPLES
The following will point p to an allocated area of memory containing the NUL-terminated string "foobar":
char *p; p = strdup("foobar"); if (p == NULL) err(1, NULL);
ERRORS
The strdup
() and
strndup
() functions may fail and set the external
variable errno for any of the errors specified for the
library function malloc(3).
SEE ALSO
free(3), malloc(3), strcpy(3), strlcpy(3), strlen(3), wcsdup(3)
STANDARDS
The strdup
() and
strndup
() functions conform to IEEE
Std 1003.1-2008 (“POSIX.1”).
HISTORY
A strdup
() macro was first used in the
4.1cBSD debugger,
dbx. It was
rewritten as a C function for the 4.3BSD
inetd(8) and
first appeared in the C library of 4.3BSD-Reno. The
strndup
() function appeared in glibc 2.0, was
reimplemented for NetBSD 4.0, and ported to
OpenBSD 4.8.