当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。