Last Updated : 23 Jul, 2025
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 ('\0') 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
Let us see the differences in a tabular form -:
These functions are useful for duplicating strings in C++. The C++ Course provides insights into how to use strdup()
and strndup()
effectively, enhancing your string manipulation skills.
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 duplicateIt 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)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4