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.
A veces necesitas concatenar un número (como un int) a una cadena. Dado que strcat() solo funciona con arreglos de caracteres, primero necesitas convertir el número en una cadena. Puedes hacer esto con sprintf(), que funciona igual que printf() pero escribe el resultado formateado en un arreglo de caracteres en lugar de imprimirlo en la pantalla. sprintf() es 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 cadenaUna 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 ahora contiene "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.
Desafío
FácilEscribe un programa en C que demuestre la concatenación de cadenas utilizando la función strcat() para construir mensajes personalizados. Tu programa debe:
- Leer un entero
nque represente el número de personas a procesar - Para cada persona:
- Leer su nombre (first name) de la entrada
- Leer su apellido (last name) de la entrada
- Crear un arreglo de caracteres llamado
fullNamecon 100 elementos - Usar
strcpy()para copiar el nombre enfullName - Usar
strcat()para añadir un espacio simple " " afullName - Usar
strcat()para añadir el apellido afullName - Crear un arreglo de caracteres llamado
greetingcon 150 elementos - Usar
strcpy()para copiar "Hello, " engreeting - Usar
strcat()para añadir elfullNameagreeting - Usar
strcat()para añadir "! Welcome to our program." agreeting - Imprimir el mensaje de saludo final
- Después de procesar a todas las personas, crear un mensaje de resumen:
- Crear un arreglo de caracteres llamado
summarycon 100 elementos - Usar
strcpy()para copiar "Total people processed: " ensummary - Convertir el número
na una cadena y usarstrcat()para añadirlo asummary - Imprimir el mensaje de resumen
- Crear un arreglo de caracteres llamado
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
SmithTu salida debe ser:
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Este 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.
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 a cada persona y crea mensajes de saludo
// Luego crea y muestra el mensaje de resumen
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
1Fundamentos de Punteros
¿Qué es un puntero?Declaración de punterosEl operador de dirección (&)El operador de desreferencia (*)Punteros NULLResumen: Conceptos básicos de punteros4Proyecto: Utilidad de texto simple
Descripción general del proyectoContar caracteres2Punteros y Arrays
Nombres de Arrays como PunterosElementos de un Array - PunterosAritmética de PunterosComparación de PunterosResumen: Recorrido de Arrays con Punteros5Punteros y funciones
Paso por valorPasar punteros a funcionesModificar variables mediante punterosUn ejemplo clásico: Intercambio (Swap)Pasar arrays a funcionesResumen: Argumentos de punteros a funciones3Arreglos de caracteres y cadenas
Cadenas como arreglos de charEl terminador nuloEntrada de cadenas con scanfUso de strlen()Uso de strcpy()Uso de strcat()Uso de strcmp()Resumen: Funciones básicas de cadenas