Menu
Coddy logo textTech

Uso de strcat()

Parte de la sección Lógica y Flujo del Journey de C de Coddy. Lección 17 de 63.

Has aprendido a copiar cadenas con strcpy(), pero ¿qué ocurre 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. Acepta dos argumentos: la cadena de destino (que se modificará) 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 crucial que tu cadena de destino tenga suficiente espacio para contener tanto el contenido original como el contenido nuevo que se está agregando. La función strcat() encuentra el terminador nulo en la cadena de destino, lo elimina, copia la cadena de origen en esa ubicación y agrega un nuevo terminador nulo al final.

A veces necesitas concatenar un número (como un int) a una cadena. Dado que strcat() solo funciona con matrices de caracteres, primero debes convertir el número en una cadena. Puedes hacerlo con sprintf(), que funciona igual que printf(), pero escribe el resultado formateado en una matriz de caracteres en lugar de imprimirlo en la pantalla. sprintf() forma parte de <stdio.h>, que ya está incluido en la mayoría de los programas en C.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr ahora contiene "42" como una cadena

Una vez que el número se almacena como una cadena en numStr, puedes usar strcat() para añadirlo a otra cadena como de costumbre:

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary now contains "Total people processed: 3"

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

challenge icon

Desafío

Fácil

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

  1. Leer un entero n que represente el número de personas que se procesarán
  2. Para cada persona:
    • Leer su 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 nombre en fullName
    • Usar strcat() para agregar un espacio simple " " a fullName
    • Usar strcat() para agregar el apellido a fullName
    • Crear un arreglo de caracteres llamado greeting con 150 elementos
    • Usar strcpy() para copiar "Hello, " en greeting
    • Usar strcat() para agregar fullName a greeting
    • Usar strcat() para agregar "! 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 en una cadena y usar strcat() para agregarla 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 varias cadenas, combinándolo con strcpy() para la configuración inicial de la cadena y creando cadenas complejas a partir de varios componentes paso a paso.

Pruébalo tú mismo

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

int main() {
    // Lee el número de personas
    int n;
    scanf("%d", &n);
    
    // TODO: Escribe tu código debajo
    // Procesa cada persona y crea mensajes de saludo
    // Luego crea y muestra 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 Lógica y Flujo

Practica por tu cuenta: Compilador de C online