Menu
CoddyTech

Revisão: Concatenação Dinâmica de Strings

Parte da seção Lógica e Fluxo do Journey de C da Coddy. Lição 61 de 63.

challenge icon

Desafio

Fácil

Crie um programa em C que implemente uma função de concatenação dinâmica de strings para criar um utilitário de processamento de texto. Seu programa deve:

  1. Escrever uma função chamada concatenateStrings que:
    • Recebe dois parâmetros char* chamados str1 e str2
    • Retorna um char* apontando para uma string alocada dinamicamente
    • Calcula a memória total necessária para ambas as strings mais o terminador nulo
    • Usa malloc() para alocar a quantidade exata de memória necessária
    • Verifica se a alocação de memória foi bem-sucedida (retorna NULL se a alocação falhar)
    • Usa strcpy() para copiar a primeira string para a memória alocada
    • Usa strcat() para anexar a segunda string ao resultado
    • Retorna o ponteiro para a string concatenada recém-criada
  2. Escrever uma função chamada processText que:
    • Recebe três parâmetros char*: word1, word2 e separator
    • Retorna um char* apontando para uma string alocada dinamicamente
    • Cria uma string combinada no formato: word1 + separator + word2
    • Primeiro chama concatenateStrings para combinar word1 e separator
    • Em seguida, chama concatenateStrings novamente para anexar word2 ao resultado
    • Libera corretamente quaisquer alocações de memória intermediárias
    • Retorna o resultado final da concatenação
  3. Na função main:
    • Declara três arrays de caracteres de tamanho 50 cada: firstWord, secondWord e connector
    • Lê três strings da entrada, representando a primeira palavra, a segunda palavra e o conector
    • Chama a função processText com essas três strings
    • Verifica se o ponteiro retornado não é NULL
    • Se for bem-sucedido, imprime o resultado neste formato exato: Result: [concatenated_string]
    • Se a alocação de memória falhar, imprime: Memory allocation failed
    • Calcula e imprime o comprimento da string resultante neste formato exato: Length: [length]
    • Libera a memória alocada dinamicamente

Este desafio testa seu domínio da alocação dinâmica de memória, das funções de manipulação de strings, dos valores de retorno de ponteiros e do gerenciamento adequado de memória. Você praticará o cálculo dos requisitos de memória, o uso de malloc() e free(), o trabalho com várias funções de string e o tratamento de falhas na alocação de memória. O desafio demonstra como a alocação dinâmica permite que funções criem e retornem dados que persistem além do escopo delas.

Experimente você mesmo

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

// TODO: Escreva sua função concatenateStrings aqui

// TODO: Escreva sua função processText aqui

int main() {
    // Leia a entrada
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: Escreva seu código abaixo
    // Chame a função processText e trate o resultado
    
    return 0;
}

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de C online