char *strndup(const char *s1,
              size_t n);

strndup duplicates at most n characters from the the string pointed to by s1 by using malloc to allocate memory for a copy of s1.

If the length of string pointed to by s1 is greater than n characters, only n characters will be duplicated. If n is greater than the length of string pointed to by s1, all characters in the string are copied into the allocated array including the terminating null character.

strndup returns a pointer to the new string or a null pointer if the new string cannot be created. The returned pointer can be passed to free.


strndup conforms to POSIX.1-2008 and SC22 TR 24731-2.