In C/C++, strncat() is a predefined function used for string handling. string.h is the header file required for string functions.
This function appends not more than n characters from the string pointed to by src to the end of the string pointed to by dest plus a terminating Null-character. The initial character of string(src) overwrites the Null-character present at the end of string(dest). Thus, length of the string(dest) becomes strlen(dest)+n. But, if the length of the string(src) is less than n, only the content up to the terminating null-character is copied and length of the string(dest) becomes strlen(src) + strlen(dest).
The behavior is undefined if
- the strings overlap.
- the dest array is not large enough to append the contents of src.
char *strncat(char *dest, const char *src, size_t n)
Parameters: This method accepts following paramters:
- dest: the string where we want to append.
- src: the string from which ‘n’ characters are going to append.
- n: represents maximum number of character to be appended. size_t is an unsigned integral type.
Return Value: The strncat() function shall return the pointer to the string(dest).
Given two strings src and dest in C++, we need to append ‘n’ character from src to dest, lets say n=5.
Input: src = "world" dest = "Hello " Output: "Hello world" Input: src = "efghijkl" dest = "abcd" Output: "abcdefghi"
Source string : efghijkl Destination string : abcdefghi
How strncat() is different from strcat() ?
It is recommended by many of the programmers that strncat() is safe as compared to strcat() because strcat() does not check for the size of the copied data, and copies until it gets to a null terminator, it might cause a buffer overflow while strncat() check for the size of the copied data, and will copy only ‘n’ bytes.
Before strcat() function execution, destination string : geeks After strcat() function execution, destination string : geeksforgeeks Before strncat() function execution, destination string : geeks After strncat() function execution, destination string : geeksfor
This article is contributed by Akash Gupta. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- strcat() vs strncat() in C++
- What happens when a virtual function is called inside a non-virtual function in C++
- Function Overloading vs Function Overriding in C++
- Difference between Virtual function and Pure virtual function in C++
- How to call function within function in C or C++
- Difference between virtual function and inline function in C++
- Write a one line C function to round floating point numbers
- Does C support function overloading?
- How can I return multiple values from a function?
- What is the purpose of a function prototype?
- How to declare a pointer to a function?
- C function to Swap strings
- Can we call an undeclared function in C++?
- What is evaluation order of function parameters in C?
- Can we use function on left side of an expression in C and C++?
- Declare a C/C++ function returning pointer to array of integer pointers
- Function overloading and return type
- Function Pointer in C
- Importance of function prototype in C
- What happens when a function is called before its declaration in C?