Menu
Coddy logo textTech

Utilisation de strcat()

Fait partie de la section Logic & Flow du Journey C de Coddy — leçon 17 sur 63.

Vous avez appris à copier des chaînes de caractères avec strcpy(), mais que se passe-t-il si vous voulez joindre deux chaînes ensemble ? C'est ce qu'on appelle la concaténation, et le langage C fournit la fonction strcat() de la bibliothèque <string.h> à cet effet.

La fonction strcat() ajoute le contenu d'une chaîne de caractères à la fin d'une autre chaîne. Elle prend deux arguments : la chaîne de destination (qui sera modifiée) et la chaîne source (qui sera ajoutée à la fin).

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting contient maintenant "Hello World"

Il est crucial que votre chaîne de destination dispose de suffisamment d'espace pour contenir à la fois le contenu original et le nouveau contenu ajouté. La fonction strcat() trouve le terminateur nul dans la chaîne de destination, le supprime, copie la chaîne source à cet emplacement et ajoute un nouveau terminateur nul à la toute fin.

Cette fonction est essentielle pour construire des chaînes plus longues à partir de morceaux plus petits, comme la création de phrases complètes à partir de mots individuels ou la combinaison de la saisie de l'utilisateur avec du texte prédéfini.

Parfois, vous devez convertir un nombre en une chaîne de caractères avant de pouvoir le concaténer. Pour cela, vous pouvez utiliser sprintf() de <stdio.h> (qui est déjà inclus dans la plupart des programmes C). sprintf() fonctionne exactement comme printf(), mais au lieu d'afficher à l'écran, il écrit le résultat formaté dans un tableau de caractères (char array).


Par exemple, pour convertir un entier en une chaîne de caractères :

int age = 25;
char ageStr[10];
sprintf(ageStr, "%d", age);  // ageStr contient maintenant "25"

char result[30] = "Age: ";
strcat(result, ageStr);       // result contient maintenant "Age: 25"

Le premier argument de sprintf() est le tableau de caractères de destination, le deuxième est la chaîne de format (utilisant les mêmes spécificateurs de format que printf()), et les arguments restants sont les valeurs à insérer.
challenge icon

Défi

Facile

Écrivez un programme C qui démontre la concaténation de chaînes de caractères à l'aide de la fonction strcat() pour construire des messages personnalisés. Votre programme doit :

  1. Lire un entier n représentant le nombre de personnes à traiter
  2. Pour chaque personne :
    • Lire son prénom à partir de l'entrée
    • Lire son nom de famille à partir de l'entrée
    • Créer un tableau de caractères nommé fullName avec 100 éléments
    • Utiliser strcpy() pour copier le prénom dans fullName
    • Utiliser strcat() pour ajouter un espace simple " " à fullName
    • Utiliser strcat() pour ajouter le nom de famille à fullName
    • Créer un tableau de caractères nommé greeting avec 150 éléments
    • Utiliser strcpy() pour copier "Hello, " dans greeting
    • Utiliser strcat() pour ajouter le fullName à greeting
    • Utiliser strcat() pour ajouter "! Welcome to our program." à greeting
    • Afficher le message de salutation final
  3. Après avoir traité toutes les personnes, créer un message de résumé :
    • Créer un tableau de caractères nommé summary avec 100 éléments
    • Utiliser strcpy() pour copier "Total people processed: " dans summary
    • Convertir le nombre n en une chaîne de caractères et utiliser strcat() pour l'ajouter à summary
    • Afficher le message de résumé

N'oubliez pas d'inclure l'en-tête <string.h> pour utiliser les fonctions de chaînes de caractères.

Votre sortie doit afficher les résultats au format suivant :

Hello, [FirstName LastName]! Welcome to our program.
Hello, [FirstName LastName]! Welcome to our program.
...
Total people processed: [n]

Par exemple, si l'entrée est :

2
John
Doe
Alice
Smith

Votre sortie doit être :

Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2

Ce défi teste votre compréhension de l'utilisation de strcat() pour concaténer plusieurs chaînes ensemble, en la combinant avec strcpy() pour la configuration initiale de la chaîne, et en construisant des chaînes complexes à partir de plusieurs composants étape par étape.

Aide-mémoire

La fonction strcat() de <string.h> concatène (joint) deux chaînes de caractères en ajoutant la chaîne source à la fin de la chaîne de destination.

Syntaxe : strcat(destination, source)

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

char greeting[20] = "Hello";
char name[] = " World";
strcat(greeting, name);  // greeting contient maintenant "Hello World"

Important : La chaîne de destination doit avoir suffisamment d'espace pour contenir à la fois le contenu original et le contenu ajouté. La fonction trouve le terminateur nul dans la destination, le supprime, copie la chaîne source à cet emplacement et ajoute un nouveau terminateur nul à la fin.

La fonction sprintf() de <stdio.h> fonctionne comme printf(), mais écrit le résultat formaté dans un tableau de caractères (chaîne) au lieu de l'afficher. Cela la rend utile pour convertir des entiers (ou d'autres valeurs) en chaînes de caractères.

Syntaxe : sprintf(destination, format, value)

#include <stdio.h>

int num = 42;
char numStr[10];
sprintf(numStr, "%d", num);  // numStr contient maintenant "42"

Important : Le tableau de destination doit être assez grand pour contenir la chaîne résultante, y compris le terminateur nul.

Essayez vous-même

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

int main() {
    // Lire le nombre de personnes
    int n;
    scanf("%d", &n);
    
    // À FAIRE : Écrivez votre code ci-dessous
    // Traiter chaque personne et créer des messages de salutation
    // Ensuite, créer et afficher le message de résumé
    
    return 0;
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logic & Flow