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

# NAME

`strdup`, `strndup` —
save a copy of a string

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <string.h>`

char *
`strdup`(const char *str);

char *
`strndup`(const char *str, size_t len);

# DESCRIPTION

The `strdup`() function allocates sufficient memory for a copy of the string str, does the copy, and returns a pointer to it. The pointer may subsequently be used as an argument to the function free(3).

If insufficient memory is available, `NULL` is returned.

The `strndup`() function copies at most len characters from the string str always `NUL` terminating the copied string.

# EXAMPLES

The following will point p to an allocated area of memory containing the nul-terminated string “foobar”:

    char *p;

    if ((p = strdup("foobar")) == NULL) {
    	fprintf(stderr, "Out of memory.\n");
    	exit(1);
    }

# ERRORS

The `strdup`() function 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), strlen(3)

# STANDARDS

The `strdup`() function conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

# HISTORY

The `strdup`() function first appeared in 4.4BSD. The `strndup`() function was added in NetBSD 4.0.

January 28, 2009 | NetBSD 9.2