Menu
Coddy logo textTech

Repaso: Concatenación dinámica de strings

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

challenge icon

Desafío

Fácil

Crea un programa en C que implemente una función de concatenación de cadenas dinámica para construir una utilidad de procesamiento de texto. Tu programa debe:

  1. Escribir una función llamada concatenateStrings que:
    • Reciba dos parámetros char* llamados str1 y str2
    • Devuelva un char* que apunte a una cadena asignada dinámicamente
    • Calcule la memoria total necesaria para ambas cadenas más el terminador nulo
    • Use malloc() para asignar la cantidad exacta de memoria requerida
    • Verifique si la asignación de memoria fue exitosa (devuelve NULL si la asignación falla)
    • Use strcpy() para copiar la primera cadena en la memoria asignada
    • Use strcat() para añadir la segunda cadena al resultado
    • Devuelva el puntero a la cadena concatenada recién creada
  2. Escribir una función llamada processText que:
    • Reciba tres parámetros char*: word1, word2 y separator
    • Devuelva un char* que apunte a una cadena asignada dinámicamente
    • Cree una cadena combinada con el formato: word1 + separator + word2
    • Primero llame a concatenateStrings para combinar word1 y separator
    • Luego llame a concatenateStrings nuevamente para añadir word2 al resultado
    • Libere adecuadamente cualquier asignación de memoria intermedia
    • Devuelva el resultado concatenado final
  3. En la función main:
    • Declare tres arreglos de caracteres de tamaño 50 cada uno: firstWord, secondWord y connector
    • Lea tres cadenas de la entrada que representen la primera palabra, la segunda palabra y el conector
    • Llame a la función processText con estas tres cadenas
    • Verifique si el puntero devuelto no es NULL
    • Si tiene éxito, imprima el resultado en este formato exacto: Result: [concatenated_string]
    • Si la asignación de memoria falló, imprima: Memory allocation failed
    • Calcule e imprima la longitud de la cadena resultante en este formato exacto: Length: [length]
    • Libere la memoria asignada dinámicamente

Este desafío pone a prueba tu dominio de la asignación dinámica de memoria, las funciones de manipulación de cadenas, los valores de retorno de punteros y la gestión adecuada de la memoria. Practicarás el cálculo de requisitos de memoria, el uso de malloc() y free(), el trabajo con múltiples funciones de cadena y el manejo de fallos en la asignación de memoria. El desafío demuestra cómo la asignación dinámica permite que las funciones creen y devuelvan datos que persisten más allá de su ámbito.

Pruébalo tú mismo

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

// TODO: Escribe tu función concatenateStrings aquí

// TODO: Escribe tu función processText aquí

int main() {
    // Leer entrada
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: Escribe tu código a continuación
    // Llama a la función processText y maneja el resultado
    
    return 0;
}

Todas las lecciones de Logic & Flow