Concatenación de cadenas C

C String Concatenation



La concatenación es el proceso para agregar una segunda cadena al final de la primera cadena. En este artículo vamos a discutir cómo concatenar cadenas en C usando diferentes métodos.

La función estándar de la biblioteca C que se utiliza para concatenar cadenas es strcat ().







Prototipo de función:

$carbonizarse * strcat (str1,str2);

donde str1 es la primera cadena y str2 es la segunda cadena. El valor de retorno de la función es el puntero a la cadena concatenada.



Ahora, con la ayuda del ejemplo veremos cómo se realiza la concatenación.



Ejemplo 1:

$ strcat (str1,str2);
donde str1 es Bella
str2 es Whitmann

después de la concatenación de la cadena,la primera cuerda será

str1 Bella Whitmann
str2 Whitmann

mientras que string2 seguirá siendo el mismo.





Ejemplo 2:

$ strcat (str2,str1);
donde str1 es Bella
str2 es Whitmann

después de la concatenación de la cadena,cadena concatenada será

str1 Bella
str2 Bella Whitmann

mientras que string1 seguirá siendo el mismo.

Declaración en archivo de encabezado C

Las funciones de manejo de cadenas se declaran en archivo de encabezado. Si se desea utilizar la función estándar para concatenar, se debe incluir este archivo de encabezado.



Por tanto, podemos lograr la concatenación de cadenas de dos formas. Uno es con el uso de la función de biblioteca C estándar y otro es sin usar la función de biblioteca C. A continuación se muestran programas de ejemplo para demostrar ambas formas. La concatenación de cadenas sin utilizar la función de biblioteca C se puede implementar de varias formas.

Hablaremos de eso también en las próximas secciones con ejemplos.

Concatenación de dos cadenas mediante la función de biblioteca C

#incluir

#incluir

#define BUF_SIZE 256
En tprincipal()
{
carbonizarseS1[BUF_SIZE],S2[BUF_SIZE]; / * Dos búferes de cadena * /

printf ('Ingrese la primera cadena orte'); ] / * Imprime un mensaje en la consola para que el usuario ingrese la primera cadena * /
fgets (S1,BUF_SIZE,stdin); / * almacena la cadena de entrada del usuario en el búfer S1 * /
S1[ strlen (S1)-1] = '';

printf ('Ingrese la segunda cadena orte');/ * Imprime un mensaje al usuario para que ingrese la segunda cadena * /
fgets (S2,BUF_SIZE,stdin); / * almacena la cadena de entrada del usuario en el búfer S2 * /
S2[ strlen (S2)-1] = '';

strcat (S1,S2); / * Llame a la función estándar con cadenas S1 y S2 * /

printf (' orteLa cadena concatenada es% s orte orte',S1); / * Salida: S1 se agrega con S2 * /

regreso 0;
}

Instantáneas del programa y salida:

Descripción de texto generada automáticamente

Descripción de texto generada automáticamente con confianza media

Concatenación de dos cadenas sin usar la función de biblioteca

Usando for loop para copiar la segunda cadena al final de la primera cadena.

#incluir

#incluir

#define BUF_SIZE 256
En tprincipal()
{
carbonizarseS1[BUF_SIZE],S2[BUF_SIZE]; / * Declara los búferes S1, S2 tanto para la cadena * /
En tlargo= 0,I,j; / * Variables necesarias para el recorrido del bucle * /

printf ('Ingrese la primera cadena'); / * Imprimir mensaje de usuario para ingresar la primera cadena * /
fgets (S1,BUF_SIZE,stdin); / * la cadena de entrada del usuario se almacenará en S1 * /
S1[ strlen (S1)-1] = '';

printf ('Ingrese la segunda cadena'); / * Imprimir mensaje de usuario para ingresar Segunda cadena * /
fgets (S2,BUF_SIZE,stdin); / * la cadena de entrada del usuario se almacenará en S2 * /
S2[ strlen (S2)-1] = '';
/ * Recorre la primera cadena para encontrar la longitud de S1 * /
por(I=0;S1[I]!='';I++)
{
largo=largo+1;
}

/ * la longitud tendrá el final del S1, comience desde la longitud y copie todo el S2 en S1 * /
por(I=largo,j=0;S2[j]!='';I++,j++)
{
S1[I]=S2[j];
S1[I]='';
}

/ * Imprime el S1, resultado concatenado * /
printf (' orteLa cadena concatenada es% s orte orte',S1);
regreso 0;
}

Instantáneas del programa y salida:

Descripción de texto generada automáticamente

Descripción de texto generada automáticamente

Otra forma de sin función de biblioteca

Concatenación mediante recursividad:

La función stringconcatenate () se usará para obtener la longitud de string1. Si S2 está vacío, se asignará un carácter nulo a S2.

Si no se asigna un carácter nulo a S2, agregue el elemento de S2 al final de S1 que sea S1 [i + j] = S2 [j], esto aumenta el valor de i en la cadena.

Una función se llamará a sí misma pasando las cadenas reformadas (S1, S2) como argumento. Se llamará una y otra vez hasta que el S2 esté vacío.

El S1 concatenado será impreso por main () como

#incluir

#incluir

#define BUF_SIZE 256

/ * función recursiva para implementar la concatenación de cadenas según la descripción anterior * /
vacíocadena de concatenar(carbonizarse *S1,carbonizarse *S2)
{
estático En tI=0;
estático En tj;
j= strlen (S1);
si(!S2[I])
{
S2[I]='';
}
demás
{
S1[j] =S2[I];
S1[j+1] = '';
I++;
cadena de concatenar(S1,S2);
}
}
En tprincipal()
{
carbonizarseS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Ingrese el valor de la primera cadena:'); / * mensaje de usuario para ingresar la 1ra cadena * /
fgets (S1,BUF_SIZE,stdin); / * el usuario ingresa la primera cadena, se almacena en S1 * /
S1[ strlen (S1)-1] = '';

printf ('Ingrese el valor de la segunda cadena:'); / * mensaje de usuario para ingresar la segunda cadena * /
fgets (S2,BUF_SIZE,stdin); / * el usuario ingresa la primera cadena, se almacena en S2 * /
S2[ strlen (S2)-1] = '';

cadena de concatenar(S1,S2); / * Llamar a la función con S1, S2 como parámetros * /

printf ('combinación de cadenas ='% s ' orte',S1);
regreso 0;
}

Instantáneas del programa y salida:

Descripción de texto generada automáticamente

Descripción de texto generada automáticamente

Concatenación mediante funciones

La función strconcatenate () es llamada por main () para combinar dos cadenas.

La función obtiene la longitud de string1 usando stringlen (string1).

Adjunte los elementos de string2 [i] en string1 [i + j]. Este paso se repetirá hasta que la cadena esté vacía. Aquí, unimos la cadena2 a la cadena1 al final de la cadena1.

La cadena concatenada (cadena 1) se recibirá al final cuando se realicen todas las iteraciones del bucle for.

El main () imprime la cadena concatenada S1

#incluir

#incluir

#define BUF_SIZE 256

/ * función para implementar la concatenación de cadenas según la descripción anterior * /
vacíostrconcatenar(carbonizarse *cadena1, carbonizarse*cadena2)
{
En tI;
En tj= strlen (cadena1);
por(I=0;cuerda2[I];I++)
{
cadena1[I+j]=cadena2[I];
}
cadena1[I+j]= '';
}
En tprincipal()
{
carbonizarsecadena1[BUF_SIZE],cadena2[BUF_SIZE];
printf ('Ingrese la primera cadena:'); / * Mensaje de usuario para la 1ra cadena * /
fgets (cadena1,BUF_SIZE,stdin); / * El usuario ingresa la segunda cadena, almacenada en string1 * /
cadena1[ strlen (cadena1)-1] = '';

printf ('Ingrese la segunda cadena:'); / * Mensaje de usuario para la segunda cadena * /
fgets (cadena2,BUF_SIZE,stdin); / * El usuario ingresa la segunda cadena, almacenada en string2 * /
cadena2[ strlen (cadena2)-1] = '';

strconcatenar(cadena1,cadena2); / * Llamar a la función con string1 y string2 como argumentos * /

printf ('Cadena resultante =% s' orte',cadena1);
regreso 0;
}

Instantáneas del programa y salida:

Descripción de texto generada automáticamente

Descripción de texto generada automáticamente

Concatenación de cadenas mediante memcpy

Al usar la función memcpy (), la concatenación de la cadena se realiza copiando palabra por palabra desde un búfer de cadena al final de otro búfer de cadena donde el tamaño de la palabra es 4 bytes considerando que estamos ejecutando en una máquina de 32 bits mientras que cuando hacemos la concatenación de cadenas por usando la concatenación de cadenas usando la función strcat (), la concatenación se realiza copiando byte por byte de un búfer de cadena a otro búfer de cadena.

Este enfoque tiene un rendimiento eficiente.

La única consideración al usar memcpy es cuidar de ' 0'.

Programa C para lograr el strcat con memcpy:

#incluir

#incluir

#define BUF_SIZE 256

Void strcat_memcpy(carbonizarse *S1, carbonizarse *S2)
{
En tlongitud1,length2;
longitud1= strlen (S1);
length2= strlen (S2);
memcpy (S1+longitud1,S2,length2);
}
En tprincipal()
{

carbonizarsecadena1[BUF_SIZE],cadena2[BUF_SIZE];
printf ('Ingrese la primera cadena:'); / * Mensaje de usuario para la 1ra cadena * /
fgets (cadena1,BUF_SIZE,stdin); / * El usuario ingresa la segunda cadena, almacenada en string1 * /
cadena1[ strlen (cadena1)-1] = '';

printf ('Ingrese la segunda cadena:'); / * Mensaje de usuario para la segunda cadena * /
fgets (cadena2,BUF_SIZE,stdin); / * El usuario ingresa la segunda cadena, almacenada en string2 * /
cadena2[ strlen (cadena2)-1] = '';

strcat_memcpy(cadena1,cadena2); / * Llamar a la función con string1 y string2 como argumentos * /

printf ('Cadena resultante =% s' orte',cadena1);
regreso 0;


}

Instantáneas del programa y salida:

Descripción de texto generada automáticamente

Descripción de texto generada automáticamente

Conclusión:

Con toda esta discusión podemos concluir la concatenación de cadenas en C. Hemos visto muchos ejemplos y programas de muestra para la concatenación de cadenas. Recordaremos los elementos principales: Hay dos formas, una con el estándar C y otra definida por el usuario. Los definidos por el usuario pueden ser de muchos tipos, dependiendo de cómo el usuario desee implementar la concatenación de cadenas.