STRDUP(3) | Library Functions Manual | STRDUP(3)

# 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.

December 1, 2015 | Debian