在C / C++中,strncat()是用于字符串处理的预定义函数。 字符串.h是字符串函数所需的头文件。
该函数将以上n从字符串的字符指向由src到字符串的末尾由DEST加上终止空字符的指向。字符串(src)的初始字符将覆盖字符串(dest)末尾的Null字符。因此,字符串的长度(dest)变为strlen(dest)+ n。但是,如果字符串(src)的长度小于n ,则仅复制直到终止空字符的内容,并且字符串(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,C++ program demonstrate functionality of strncat()
#include
#include
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;
}
C
// C,C++ program demonstrate difference bewteen
// strncat() and strcat()
#include
#include
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;
}
输出:
Source string : efghijkl
Destination string : abcdefghi
strncat()与strcat()有何不同?
许多程序员建议与strcat()相比,strncat()是安全的,因为strcat()不会检查复制数据的大小,并且复制直到到达空终止符,否则可能会导致缓冲区当strncat()检查复制数据的大小时溢出,并且仅复制’n’个字节。
C
// C,C++ program demonstrate difference bewteen
// strncat() and strcat()
#include
#include
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的C基础课程》。