Menu
CoddyTech

Repaso: Concatenación dinámica de strings

Parte de la sección Lógica y Flujo 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 dinámica de cadenas para crear una utilidad de procesamiento de texto. Tu programa debe:

  1. Escribir una función llamada concatenateStrings que:
    • Acepte 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 exactamente la cantidad de memoria requerida
    • Compruebe si la asignación de memoria se realizó correctamente (devuelva NULL si 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:
    • Acepte 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
    • Después vuelva a llamar a concatenateStrings para añadir word2 al resultado
    • Libere correctamente cualquier asignación de memoria intermedia
    • Devuelva el resultado concatenado final
  3. En la función principal:
    • Declare tres arreglos de caracteres de 50 elementos 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
    • Compruebe que el puntero devuelto no sea NULL
    • Si la operación se realiza correctamente, imprima el resultado con este formato exacto: Result: [concatenated_string]
    • Si falla la asignación de memoria, imprima: Memory allocation failed
    • Calcule e imprima la longitud de la cadena resultante con 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 cómo calcular los requisitos de memoria, usar malloc() y free(), trabajar con varias funciones de cadenas y gestionar los errores de 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 aquí tu función concatenateStrings

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

int main() {
    // Lee la 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 Lógica y Flujo

Practica por tu cuenta: Compilador de C online