Menu
CoddyTech

Récap : Concaténation dynamique de chaînes

Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 61 sur 63.

challenge icon

Défi

Facile

Créez un programme C qui implémente une fonction de concaténation dynamique de chaînes afin de créer un utilitaire de traitement de texte. Votre programme doit :

  1. Écrire une fonction nommée concatenateStrings qui :
    • Prend deux paramètres char* nommés str1 et str2
    • Renvoie un char* pointant vers une chaîne allouée dynamiquement
    • Calcule la mémoire totale nécessaire pour les deux chaînes, ainsi que pour le caractère nul de fin
    • Utilise malloc() pour allouer la quantité exacte de mémoire requise
    • Vérifie si l’allocation de mémoire a réussi (renvoie NULL si l’allocation échoue)
    • Utilise strcpy() pour copier la première chaîne dans la mémoire allouée
    • Utilise strcat() pour ajouter la deuxième chaîne au résultat
    • Renvoie le pointeur vers la chaîne concaténée nouvellement créée
  2. Écrire une fonction nommée processText qui :
    • Prend trois paramètres char* : word1, word2 et separator
    • Renvoie un char* pointant vers une chaîne allouée dynamiquement
    • Crée une chaîne combinée au format : word1 + separator + word2
    • Appelle d’abord concatenateStrings pour combiner word1 et separator
    • Appelle ensuite concatenateStrings une nouvelle fois pour ajouter word2 au résultat
    • Libère correctement toute mémoire intermédiaire allouée
    • Renvoie le résultat final de la concaténation
  3. Dans la fonction main :
    • Déclarer trois tableaux de caractères de taille 50 chacun : firstWord, secondWord et connector
    • Lire trois chaînes depuis l’entrée, représentant le premier mot, le deuxième mot et le connecteur
    • Appeler la fonction processText avec ces trois chaînes
    • Vérifier que le pointeur renvoyé n’est pas NULL
    • En cas de réussite, afficher le résultat dans ce format exact : Result: [concatenated_string]
    • Si l’allocation de mémoire a échoué, afficher : Memory allocation failed
    • Calculer et afficher la longueur de la chaîne résultat dans ce format exact : Length: [length]
    • Libérer la mémoire allouée dynamiquement

Ce défi met à l’épreuve votre maîtrise de l’allocation dynamique de mémoire, des fonctions de manipulation des chaînes, des valeurs de retour de pointeurs et de la bonne gestion de la mémoire. Vous vous exercerez à calculer les besoins en mémoire, à utiliser malloc() et free(), à travailler avec plusieurs fonctions de chaînes et à gérer les échecs d’allocation de mémoire. Ce défi montre comment l’allocation dynamique permet aux fonctions de créer et de renvoyer des données qui persistent au-delà de leur portée.

Essayez vous-même

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

// TODO: Écrivez votre fonction concatenateStrings ici

// TODO: Écrivez votre fonction processText ici

int main() {
    // Lisez l’entrée
    char firstWord[50];
    char secondWord[50];
    char connector[50];
    
    scanf("%s", firstWord);
    scanf("%s", secondWord);
    scanf("%s", connector);
    
    // TODO: Écrivez votre code ci-dessous
    // Appelez la fonction processText et traitez le résultat
    
    return 0;
}

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur C en ligne