Menu
Coddy logo textTech

Uso de strcat()

Parte de la sección Logic & Flow del Journey de C de Coddy — lección 17 de 63.

Has aprendido a copiar cadenas con strcpy(), ¿pero qué pasa si quieres unir dos cadenas? Esto se llama concatenación, y C proporciona la función strcat() de la biblioteca <string.h> para este propósito.

La función strcat() añade el contenido de una cadena al final de otra cadena. Toma dos argumentos: la cadena de destino (que será modificada) y la cadena de origen (que se añadirá al final).

#include <stdio.h>
#include <string.h>

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting ahora contiene "Hello World"

Es fundamental que la cadena de destino tenga suficiente espacio para albergar tanto el contenido original como el nuevo contenido que se está añadiendo. La función strcat() busca el terminador nulo en la cadena de destino, lo elimina, copia la cadena de origen en esa ubicación y añade un nuevo terminador nulo al final.

Esta función es esencial para construir cadenas más largas a partir de fragmentos más pequeños, como crear oraciones completas a partir de palabras individuales o combinar la entrada del usuario con texto predefinido.

A veces necesitas convertir un número en una cadena antes de poder concatenarlo. Para esto, puedes usar sprintf() de <stdio.h> (que ya está incluido en la mayoría de los programas en C). sprintf() funciona igual que printf(), pero en lugar de imprimir en la pantalla, escribe el resultado formateado en un array de caracteres.


Por ejemplo, para convertir un entero en una cadena:

int age = 25;
char ageStr[10];
sprintf(ageStr, "%d", age);  // ageStr ahora contiene "25"

char result[30] = "Age: ";
strcat(result, ageStr);       // result ahora contiene "Age: 25"

El primer argumento de sprintf() es el array de caracteres de destino, el segundo es la cadena de formato (usando los mismos especificadores de formato que printf()), y los argumentos restantes son los valores a insertar.
challenge icon

Desafío

Fácil

Escribe un programa en C que demuestre la concatenación de cadenas utilizando la función strcat() para construir mensajes personalizados. Tu programa debe:

  1. Leer un entero n que represente el número de personas a procesar
  2. Para cada persona:
    • Leer su primer nombre de la entrada
    • Leer su apellido de la entrada
    • Crear un arreglo de caracteres llamado fullName con 100 elementos
    • Usar strcpy() para copiar el primer nombre en fullName
    • Usar strcat() para añadir un espacio simple " " a fullName
    • Usar strcat() para añadir el apellido a fullName
    • Crear un arreglo de caracteres llamado greeting con 150 elementos
    • Usar strcpy() para copiar "Hello, " en greeting
    • Usar strcat() para añadir el fullName a greeting
    • Usar strcat() para añadir "! Welcome to our program." a greeting
    • Imprimir el mensaje de saludo final
  3. Después de procesar a todas las personas, crear un mensaje de resumen:
    • Crear un arreglo de caracteres llamado summary con 100 elementos
    • Usar strcpy() para copiar "Total people processed: " en summary
    • Convertir el número n a una cadena y usar strcat() para añadirlo a summary
    • Imprimir el mensaje de resumen

Recuerda incluir el encabezado <string.h> para usar las funciones de cadenas.

Tu salida debe mostrar los resultados en el siguiente formato:

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Por ejemplo, si la entrada es:

2
John
Doe
Alice
Smith

Tu salida debe ser:

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Este desafío pone a prueba tu comprensión del uso de strcat() para concatenar múltiples cadenas, combinándolo con strcpy() para la configuración inicial de la cadena, y construyendo cadenas complejas a partir de múltiples componentes paso a paso.

Hoja de referencia

La función strcat() de <string.h> concatena (une) dos cadenas adjuntando la cadena de origen al final de la cadena de destino.

Sintaxis: strcat(destination, source)

#include <stdio.h>
#include <string.h>

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting ahora contiene "Hello World"

Importante: La cadena de destino debe tener suficiente espacio para contener tanto el contenido original como el contenido adjunto. La función busca el terminador nulo en el destino, lo elimina, copia la cadena de origen en esa ubicación y añade un nuevo terminador nulo al final.

La función sprintf() de <stdio.h> funciona como printf(), pero escribe el resultado formateado en un array de caracteres (cadena) en lugar de imprimirlo. Esto la hace útil para convertir enteros (u otros valores) en cadenas.

Sintaxis: sprintf(destination, format, value)

#include <stdio.h>

int num = 42;
char numStr[10];
sprintf(numStr, "%d", num);  // numStr ahora contiene "42"

Importante: El array de destino debe ser lo suficientemente grande como para contener la cadena resultante, incluyendo el terminador nulo.

Pruébalo tú mismo

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    // Leer el número de personas
    int n;
    scanf("%d", &n);
    
    // TODO: Escribe tu código a continuación
    // Procesar a cada persona y crear mensajes de saludo
    // Luego crear y mostrar el mensaje de resumen
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow