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