función strncat() en C/C++

En C/C++, strncat() es una función predefinida utilizada para el manejo de strings. string.h es el archivo de encabezado requerido para las funciones de string.
Esta función agrega no más de n caracteres de la string a la que apunta src al final de la string a la que apunta dest más un carácter Nulo de terminación. El carácter inicial de la string (src) sobrescribe el carácter nulo presente al final de una string (destino). Por lo tanto, la longitud de la string (dest) se convierte en strlen (dest) + n. Pero, si la longitud de string(src) es menor que n , solo se copia el contenido hasta el carácter nulo final y la longitud de string(dest) se convierte en strlen(src) + strlen(dest).
El comportamiento es indefinido si –

  • Las cuerdas se superponen.
  • La array dest no es lo suficientemente grande para agregar el contenido de src.

Sintaxis: 

char *strncat(char *dest, const char *src, size_t n)

Parámetros: Este método acepta los siguientes parámetros: 

  • dest : la string donde queremos agregar.
  • src : la string de la que se agregarán los caracteres ‘n’.
  • n : representa un número máximo de caracteres que se agregarán. size_t es un tipo integral sin signo.

Valor de retorno: la función strncat() devolverá el puntero a la string (destino). 

Aplicación 
Dadas dos strings src y dest en C++, necesitamos agregar el carácter ‘n’ de src a dest, digamos n=5.

Ejemplos:  

Input:  src = "world"
        dest = "Hello "
Output: "Hello world"

Input:  src = "efghijkl"
        dest = "abcd"
Output: "abcdefghi"

Programa:  

C++

// C,C++ program demonstrate functionality of strncat()
#include <cstring>
#include <iostream>
using namespace std;
 
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
   cout <<"Source string : "<< src << endl;
   cout <<"Destination string : "<< dest;
    
   return 0;
}
 
// This code is contributed by shivanisinghss2110

C

// 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;
}

Producción: 

Source string : efghijkl
Destination string : abcdefghi

¿En qué se diferencia strncat() de strcat() ?
Muchos de los programadores recomiendan que strncat() es seguro en comparación con strcat() porque strcat() no verifica el tamaño de los datos copiados y copia hasta que llega a un terminador nulo, lo que podría causar un búfer. desbordamiento mientras que strncat() verifica el tamaño de los datos copiados, y copiará solo ‘n’ bytes.

C++

// C,C++ program demonstrate difference between
// strncat() and strcat()
#include <cstring>
#include <iostream>
using namespace std;
 
int main()
{
   
   // Take any two strings
   char src[50] = "forgeeks";
   char dest1[50] = "geeks";
   char dest2[50] = "geeks";
  
   cout << "Before strcat() function execution, ";
   cout << "destination string : "<< dest1 << endl;
    
   // Appends the entire string of src to dest1
   strcat(dest1, src);
  
   // Prints the string
   cout << "After strcat() function execution, ";
   cout << "destination string : "<< dest1 << endl;
  
   cout << "Before strncat() function execution, ";
   cout << "destination string : "<< dest2 << endl;
    
   // Appends 3 characters from src to dest2
   strncat(dest2, src, 3);
     
   // Prints the string
   cout << "After strncat() function execution, ";
   cout << "destination string : "<< dest2 << endl;
    
   return 0;
}
 
// this code is contributed by shivanisinghss2110

C

// C,C++ program demonstrate difference between
// 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;
}

Producción: 

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

Este artículo es una contribución de Akash Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *