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.
Défi
FacileCré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 :
- Écrire une fonction nommée
concatenateStringsqui :- Prend deux paramètres
char*nommésstr1etstr2 - 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
- Prend deux paramètres
- Écrire une fonction nommée
processTextqui :- Prend trois paramètres
char*:word1,word2etseparator - 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
concatenateStringspour combinerword1etseparator - Appelle ensuite
concatenateStringsune nouvelle fois pour ajouterword2au résultat - Libère correctement toute mémoire intermédiaire allouée
- Renvoie le résultat final de la concaténation
- Prend trois paramètres
- Dans la fonction main :
- Déclarer trois tableaux de caractères de taille 50 chacun :
firstWord,secondWordetconnector - Lire trois chaînes depuis l’entrée, représentant le premier mot, le deuxième mot et le connecteur
- Appeler la fonction
processTextavec 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
- Déclarer trois tableaux de caractères de taille 50 chacun :
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
1Les bases des pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de pointeursL'opérateur d'adresse (&)L'opérateur de déréférencement (*)Pointeurs NULLRécapitulatif : Les bases des pointeurs4Projet : Utilitaire de texte simple
Présentation du projetCompter les caractères2Pointeurs et Tableaux
Noms de tableaux comme pointeursÉléments de tableau - PointeursArithmétique des pointeursComparaison de pointeursRécapitulatif : Parcours de tableau par pointeur5Pointeurs et fonctions
Passage par valeurPassage de pointeurs aux fonctionsModifier des variables via des pointeursUn exemple classique : SwapPassage de tableaux aux fonctionsRécapitulatif : Pointeurs comme arguments de fonction8Structures et Pointeurs
Pointeurs vers des structuresL'opérateur flèche (->)Passage de structures par valeurPassage de pointeurs de structuresAllocation dynamique de structuresRécap : Modifier une structure - Ptr11Défis de révision finale
Récap : Concaténation dynamique de chaînesRécap : Tableau de structsRécap : Compteur de fréquence des mots3Tableaux de caractères et chaînes
Les chaînes comme tableaux de charLe terminateur nulSaisie de chaînes avec scanfUtilisation de strlen()Utilisation de strcpy()Utilisation de strcat()Utilisation de strcmp()Récapitulatif : Fonctions de base sur les chaînesEntraînez-vous par vous-même : Compilateur C en ligne