當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C++ strncat()用法及代碼示例


在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


相關用法


注:本文由純淨天空篩選整理自 strncat() function in C/C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。