STRDUP(3)

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 8.0