在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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。