Tutorialspoint.dev

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

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 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 (”) is added at the end.

Below is the C implementation to show the use of strndup() function in 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

Reference: Linux man(7)

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



This article is attributed to GeeksforGeeks.org

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter