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.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.
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;
}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