在C/C++中,strncat()是用于字符串处理的预定义函数。 一串H 是字符串函数所需的头文件。 此函数的附加值不超过 N 从src指向的字符串到dest指向的字符串末尾的字符加上一个终止的空字符。字符串的初始字符(src)覆盖字符串(dest)末尾的空字符。因此,字符串的长度(dest)变为strlen(dest)+n。但是,如果字符串的长度(src)小于 N ,只复制直到终止空字符的内容,字符串长度(dest)变为strlen(src)+strlen(dest)。 如果——
- 琴弦重叠。
- dest数组不够大,无法附加src的内容。
语法:
char *strncat(char *dest, const char *src, size_t n)
参数: 此方法接受以下参数:
- 目的地 :要追加的字符串。
- src :将从中追加“n”个字符的字符串。
- N :表示要追加的最大字符数。size_t是一种无符号整数类型。
返回值: 函数的作用是:返回字符串(dest)的指针。
应用 给定C++中的两个字符串SRC和DEST,我们需要从Src到Dest’附加n’字符,假设n=5。
例如:
Input: src = "world" dest = "Hello "Output: "Hello world"Input: src = "efghijkl" dest = "abcd"Output: "abcdefghi"
节目:
C++
// C,C++ program demonstrate functionality of strncat() #include <cstring> #include <iostream> using namespace std; int main() { // Take any two strings char src[50] = "efghijkl" ; char dest[50]= "abcd" ; // Appends 5 character from src to dest strncat (dest, src, 5); // Prints the string cout << "Source string : " << src << endl; cout << "Destination string : " << dest; return 0; } // This code is contributed by shivanisinghss2110 |
C
// C,C++ program demonstrate functionality of strncat() #include <stdio.h> #include <string.h> int main() { // Take any two strings char src[50] = "efghijkl" ; char dest[50]= "abcd" ; // Appends 5 character from src to dest strncat (dest, src, 5); // Prints the string printf ( "Source string : %s" , src); printf ( "Destination string : %s" , dest); return 0; } |
输出:
Source string : efghijklDestination string : abcdefghi
strncat()与strcat()有何不同? 许多程序员建议,与strcat()相比,strcat()是安全的,因为strcat()不检查复制数据的大小,并且在到达空终止符之前复制,这可能会导致缓冲区溢出,而strncat()检查复制数据的大小,并且只复制“n”字节。
C++
// C,C++ program demonstrate difference between // strncat() and strcat() #include <cstring> #include <iostream> using namespace std; int main() { // Take any two strings char src[50] = "forgeeks" ; char dest1[50] = "geeks" ; char dest2[50] = "geeks" ; cout << "Before strcat() function execution, " ; cout << "destination string : " << dest1 << endl; // Appends the entire string of src to dest1 strcat (dest1, src); // Prints the string cout << "After strcat() function execution, " ; cout << "destination string : " << dest1 << endl; cout << "Before strncat() function execution, " ; cout << "destination string : " << dest2 << endl; // Appends 3 characters from src to dest2 strncat (dest2, src, 3); // Prints the string cout << "After strncat() function execution, " ; cout << "destination string : " << dest2 << endl; return 0; } // this code is contributed by shivanisinghss2110 |
C
// C,C++ program demonstrate difference between // strncat() and strcat() #include <stdio.h> #include <string.h> int main() { // Take any two strings char src[50] = "forgeeks" ; char dest1[50] = "geeks" ; char dest2[50] = "geeks" ; printf ( "Before strcat() function execution, " ); printf ( "destination string : %s" , dest1); // Appends the entire string of src to dest1 strcat (dest1, src); // Prints the string printf ( "After strcat() function execution, " ); printf ( "destination string : %s" , dest1); printf ( "Before strncat() function execution, " ); printf ( "destination string : %s" , dest2); // Appends 3 characters from src to dest2 strncat (dest2, src, 3); // Prints the string printf ( "After strncat() function execution, " ); printf ( "destination string : %s" , dest2); return 0; } |
输出:
Before strcat() function execution, destination string : geeksAfter strcat() function execution, destination string : geeksforgeeksBefore strncat() function execution, destination string : geeksAfter strncat() function execution, destination string : geeksfor
本文由 阿卡什·古普塔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。