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 C fournit la fonction strcat() de la bibliothèque <string.h> à cet effet.

La fonction strcat() ajoute le contenu d'une chaîne à 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.

Parfois, vous devez concaténer un nombre (comme un int) à une chaîne de caractères. Comme strcat() ne fonctionne qu'avec des tableaux de caractères, vous devez d'abord convertir le nombre en une chaîne. Vous pouvez le faire avec sprintf(), qui fonctionne exactement comme printf() mais écrit le résultat formaté dans un tableau de caractères au lieu de l'afficher à l'écran. sprintf() fait partie de <stdio.h>, qui est déjà inclus dans la plupart des programmes C.

int n = 42;
char numStr[20];
sprintf(numStr, "%d", n);  // numStr contient maintenant "42" sous forme de chaîne

Une fois que le nombre est stocké sous forme de chaîne dans numStr, vous pouvez utiliser strcat() pour l'ajouter à une autre chaîne comme d'habitude :

char summary[100] = "Total people processed: ";
int n = 3;
char numStr[20];
sprintf(numStr, "%d", n);
strcat(summary, numStr);  // summary contient maintenant "Total people processed: 3"

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 d'entrées utilisateur avec du texte prédéfini.

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.

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);
    
    // TODO: É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