在C /C++中,strncat()是用于字符串处理的预定义函数。 string.h是字符串函数所需的头文件。
此函数从src指向的字符串到dest指向的字符串的末尾附加不超过n个字符,并附加一个终止的Null-character。字符串(src)的初始字符将覆盖字符串(dest)末尾的Null-character。因此,字符串(目标)的长度变为strlen(目标)+ n。但是,如果字符串(src)的长度小于n,则仅复制直到终止null-character的内容,并且字符串(dest)的长度变为strlen(src)+ strlen(dest)。
该行为是不确定的,如果
- 字符串重叠。
- dest数组的大小不足以附加src的内容。
用法:
char *strncat(char *dest, const char *src, size_t n)
参数:此方法接受以下参数:
- dest:我们要附加的字符串。
- src:要附加n个字符的字符串。
- n:表示要附加的最大字符数。 size_t是无符号整数类型。
返回值:strncat()函数应将指针返回到字符串(目标)。
应用
给定C++中的两个字符串src和dest,我们需要将src中的'n'字符附加到dest,假设n = 5。
例子:
Input: src = "world" dest = "Hello " Output:"Hello world" Input: src = "efghijkl" dest = "abcd" Output:"abcdefghi"
程序:
// 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\n", src);
printf("Destination string:%s", dest);
return 0;
}
输出:
Source string:efghijkl Destination string:abcdefghi
How strncat() is different from strcat() ?
许多程序员建议strncat()与strcat()相比是安全的,因为strcat()不会检查复制数据的大小,并且会一直复制到空终止符,这可能会导致缓冲区溢出,而strncat()会检查缓冲区是否溢出。复制数据的大小,并且只会复制“ n”个字节。
// C,C++ program demonstrate difference bewteen
// 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\n", dest1);
// Appends the entire string of src to dest1
strcat(dest1, src);
// Prints the string
printf("After strcat() function execution, ");
printf("destination string:%s\n", dest1);
printf("Before strncat() function execution, ");
printf("destination string:%s\n", dest2);
// Appends 3 characters from src to dest2
strncat(dest2, src, 3);
// Prints the string
printf("After strncat() function execution, ");
printf("destination string:%s\n", dest2);
return 0;
}
输出:
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
相关用法
- C++ strcat() vs strncat()用法及代码示例
- C++ fma()用法及代码示例
- C++ log()用法及代码示例
- C++ div()用法及代码示例
- C++ iswxdigit()用法及代码示例
- C++ exp2()用法及代码示例
- C++ strtol()用法及代码示例
- C++ towlower()用法及代码示例
- C++ towupper()用法及代码示例
- C++ iswalpha()用法及代码示例
注:本文由纯净天空筛选整理自 strncat() function in C/C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。