June 22, 2008 STRDUP 3

### NAME

strdup, strndup - save a copy of a string

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```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)

### HISTORY

The strdup(``) function first appeared in 4.4BSD. The strndup(``) function was added in NetBSD4.0.