En este post sobre C te mostraré cómo concatenar un carácter y una cadena, es decir, agregar un tipo de dato char
a un tipo de dato char*
que no es otra cosa más que un arreglo de caracteres, ya que en C no existen las strings como tal.
Explicado con pocas palabras te enseñaré como agregar un char como 'a'
a una cadena como "Hol"
.
Aunque en otros lenguajes esto no tiene ninguna complejidad, en ANSI C hay que escribir un poco más de código.
Función para concatenar char y string en C
Primero veamos la función que nos permitirá hacer esto. Lo que se hace dentro de la misma es crear una cadena temporal a partir del carácter, definiendo un arreglo de caracteres y agregando el \0
(carácter NULL
) al final del mismo para que sea una cadena válida.
Aquí básicamente estamos convirtiendo el char a string.
Luego se invoca a la función strcat
que va a concatenar nuestra cadena temporal (que solo tiene el char) a la cadena indicada.
// Nota: la cadena debería tener espacio suficiente para concatenar el carácter.
// Esta función no se encarga de evitar desbordamientos o cosas parecidas
// https://parzibyte.me/blog
void concatenarCharACadena(char c, char *cadena)
{
char cadenaTemporal[2];
cadenaTemporal[0] = c;
cadenaTemporal[1] = '\0';
strcat(cadena, cadenaTemporal);
}
De este modo vamos a tener el char agregado al final de la cadena. Fíjate en los comentarios de la función, sobre todo en lo que se refiere al espacio suficiente.
Ejemplo: concatenar carácter a cadena en C
Ya te mostré el código de la función, ahora te enseñaré a usarla. El código completo junto con el uso del método dentro de main queda así:
#include <stdio.h>
#include <string.h>
#define MAXIMA_LONGITUD_CADENA 100
// Nota: la cadena debería tener espacio suficiente para concatenar el carácter.
// Esta función no se encarga de evitar desbordamientos o cosas parecidas
// https://parzibyte.me/blog
void concatenarCharACadena(char c, char *cadena)
{
char cadenaTemporal[2];
cadenaTemporal[0] = c;
cadenaTemporal[1] = '\0';
strcat(cadena, cadenaTemporal);
}
int main(int argc, char const *argv[])
{
char cadena[MAXIMA_LONGITUD_CADENA] = "Hol";
printf("Antes de concatenar: %s\n", cadena);
// Concatenar
char c = 'a';
concatenarCharACadena(c, cadena);
printf("Después de concatenar: %s\n", cadena);
return 0;
}
En la línea 19 declaramos la cadena, después de eso el ejemplo para concatenar está en la línea 22 y 23. Puedes invocar la función cuantas veces quieras, siempre y cuando la cadena tenga espacio suficiente.
Por cierto, recuerda que para usar strcat
necesitas importar a string.h, cosa que se está haciendo en la línea 2.
También te dejo un enlace para leer más sobre C en el blog de Parzibyte.
Muchas gracias genio!