Utilisation de strcat()
Fait partie de la section Logique & Flux du Journey C de Coddy. Leçon 17 sur 63.
Vous avez appris à copier des chaînes avec strcpy(), mais que faire si vous voulez joindre deux chaînes ? Cela s’appelle la concaténation, et C fournit la fonction strcat() de la bibliothèque <string.h> à cette fin.
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 d’origine et le nouveau contenu ajouté. La fonction strcat() trouve le caractère de fin nul dans la chaîne de destination, le supprime, copie la chaîne source à cet emplacement et ajoute un nouveau caractère de fin nul tout à la fin.
Parfois, vous devez concaténer un nombre (comme un int) à une chaîne. Comme strcat() fonctionne uniquement avec des tableaux de caractères, vous devez d’abord convertir le nombre en 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" en tant que chaîneUne 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 now contains "Total people processed: 3"Cette fonction est essentielle pour construire des chaînes plus longues à partir de morceaux plus petits, par exemple pour créer des phrases complètes à partir de mots individuels ou combiner une saisie utilisateur avec du texte prédéfini.
Défi
FacileÉcrivez un programme C qui montre la concaténation de chaînes à l’aide de la fonction strcat() afin de construire des messages personnalisés. Votre programme doit :
- Lire un entier
nreprésentant le nombre de personnes à traiter - Pour chaque personne :
- Lire son prénom depuis l’entrée
- Lire son nom depuis l’entrée
- Créer un tableau de caractères nommé
fullNamecontenant 100 éléments - Utiliser
strcpy()pour copier le prénom dansfullName - Utiliser
strcat()pour ajouter un espace unique " " àfullName - Utiliser
strcat()pour ajouter le nom àfullName - Créer un tableau de caractères nommé
greetingcontenant 150 éléments - Utiliser
strcpy()pour copier "Hello, " dansgreeting - Utiliser
strcat()pour ajouterfullNameàgreeting - Utiliser
strcat()pour ajouter "! Welcome to our program." àgreeting - Afficher le message de salutation final
- Après avoir traité toutes les personnes, créer un message récapitulatif :
- Créer un tableau de caractères nommé
summarycontenant 100 éléments - Utiliser
strcpy()pour copier "Total people processed: " danssummary - Convertir le nombre
nen chaîne et utiliserstrcat()pour l’ajouter àsummary - Afficher le message récapitulatif
- Créer un tableau de caractères nommé
N’oubliez pas d’inclure l’en-tête <string.h> pour utiliser les fonctions de manipulation des chaînes.
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
SmithVotre sortie doit être :
Hello, John Doe! Welcome to our program.
Hello, Alice Smith! Welcome to our program.
Total people processed: 2Ce défi teste votre compréhension de l’utilisation de strcat() pour concaténer plusieurs chaînes, en l’associant à strcpy() pour la configuration initiale des chaînes 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
// Puis créer et afficher le message récapitulatif
return 0;
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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 fonction3Tableaux 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