📜  C / C++中的strncat()函数

📅  最后修改于: 2021-05-25 22:28:20             🧑  作者: Mango

在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基础课程》。