strdup
From cppreference.com
                    
                                        
                    < c | experimental | dynamic
                    
                                                            
                    |   Defined in header  <string.h>
  | 
||
|   char * strdup( const char *str1 );  | 
(dynamic memory TR) | |
Returns a pointer to a null-terminated byte string, which is a duplicate
of the string pointed to by str1. The returned pointer must be passed to free to avoid a memory leak.
If an error occurs, a null pointer is returned and errno may be set.
As all functions from Dynamic Memory TR, strdup is only guaranteed to be available if __STDC_ALLOC_LIB__ is defined by the implementation and if the user defines __STDC_WANT_LIB_EXT2__ to the integer constant 1 before including string.h.
Parameters
| str1 | - | pointer to the null-terminated byte string to duplicate | 
Return value
A pointer to the newly allocated string, or a null pointer if an error occurred.
Notes
The function is identical to the POSIX strdup.
Example
Run this code
See also
|    (dynamic memory TR)  | 
   allocate a copy of a string up to specified size  (function)  | 
|    (C11)  | 
   copies one string to another  (function)  | 
|    allocates memory  (function)  |