Open In App

strdup() and strndup() functions in C/C++

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

The strdup() and strndup() functions are used to duplicate a string. 
strdup() : 
Syntax : char *strdup(const char *s); 
This function returns a pointer to a null-terminated byte string, which is a duplicate of the string pointed to by s. The memory obtained is done dynamically using malloc and hence it can be freed using free()
It returns a pointer to the duplicated string s.
Below is the C implementation to show the use of strdup() function in C:
 

C




// C program to demonstrate strdup()
#include<stdio.h>
#include<string.h>
 
int main()
{
    char source[] = "GeeksForGeeks";
 
    // A copy of source is created dynamically
    // and pointer to copy is returned.
    char* target = strdup(source);
 
    printf("%s", target);
    return 0;
}


Output: 

GeeksForGeeks

strndup() : 
syntax: char *strndup(const char *s, size_t n); 
This function is similar to strdup(), but copies at most n bytes. 
Note: If s is longer than n, then only n bytes are copied, and a NULL (‘\0’) is added at the end.
Below is the C implementation to show the use of strndup() function in C:
 

C




// C program to demonstrate strndup()
#include<stdio.h>
#include<string.h>
 
int main()
{
    char source[] = "GeeksForGeeks";
 
    // 5 bytes of source are copied to a new memory
    // allocated dynamically and pointer to copied
    // memory is returned.
    char* target = strndup(source, 5);
 
    printf("%s", target);
    return 0;
}


Output:

Geeks

Let us see the differences in a tabular form -:

  strdup()  strndup() 
1. It is used to return  a pointer to a null-terminated byte string, It is used to return  a pointer to a null-terminated byte string
2. Its syntax is -:
char * strdup( const char *str1 );

Its syntax is -:

char *strndup( const char *str, size_t size );

3. It is defined in <string.h> header file It is defined in <string.h> header file
4. It only take one parameter that is pointer to the null-terminated byte string to duplicate

It takes two parameters that are -:
1.pointer to the null-terminated byte string to duplicate

2. max number of bytes to copy from str

5. Its return value is pointer to the newly allocated string. It returns a null pointer if an error occurred.

Reference: Linux man(7)

 



Last Updated : 23 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads