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î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 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.
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 :
- Lire un entier
nreprésentant le nombre de personnes à traiter - 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é
fullNameavec 100 éléments - Utiliser
strcpy()pour copier le prénom dansfullName - 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é
greetingavec 150 éléments - Utiliser
strcpy()pour copier "Hello, " dansgreeting - Utiliser
strcat()pour ajouter lefullNameà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 de résumé :
- Créer un tableau de caractères nommé
summaryavec 100 éléments - Utiliser
strcpy()pour copier "Total people processed: " danssummary - Convertir le nombre
nen une chaîne de caractères et utiliserstrcat()pour l'ajouter àsummary - Afficher le message de résumé
- Créer un tableau de caractères nommé
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
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 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;
}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
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înes