Menu
Coddy logo textTech

Utilisation de strcpy()

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

Vous avez appris comment trouver la longueur des chaînes de caractères avec strlen(), mais que faire si vous avez besoin de copier le contenu d'une chaîne dans une autre ? En C, vous ne pouvez pas utiliser l'opérateur d'affectation (=) pour copier des chaînes comme vous le feriez avec des variables ordinaires.

La raison est que les chaînes de caractères sont des tableaux de caractères, et quand vous utilisez = avec des tableaux, vous ne copiez que l'adresse mémoire, pas le contenu réel. C'est là que la fonction strcpy() de la bibliothèque <string.h> devient essentielle.

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // Copie "Hello" dans destination

La fonction strcpy() prend deux arguments : le tableau de destination (vers lequel vous voulez copier) et la chaîne source (ce que vous voulez copier). Elle copie chaque caractère de la source vers la destination, y compris le caractère de fin de chaîne nul (null terminator).

Il est crucial que votre tableau de destination soit assez grand pour contenir l'intégralité de la chaîne source plus le terminateur nul. Si la destination est trop petite, strcpy() écrira au-delà des limites du tableau, provoquant un comportement indéfini.

Cette fonction est fondamentale pour la manipulation de chaînes de caractères en C, vous permettant de dupliquer des chaînes, d'initialiser des variables de chaîne avec un contenu existant et de préparer des chaînes pour un traitement ultérieur.

challenge icon

Défi

Facile

Écrivez un programme C qui démontre la copie de chaînes de caractères à l'aide de la fonction strcpy(). Votre programme doit :

  1. Lire un entier n représentant le nombre d'opérations sur les chaînes à effectuer
  2. Pour chaque opération :
    • Lire une chaîne source à partir de l'entrée
    • Déclarer un tableau de caractères nommé destination avec 100 éléments
    • Utiliser strcpy() pour copier la chaîne source dans le tableau de destination
    • Afficher à la fois la chaîne source originale et la chaîne de destination copiée
  3. Après toutes les opérations, démontrer que les chaînes copiées sont indépendantes en :
    • Modifiant le premier caractère du dernier tableau de destination par 'X'
    • Affichant la chaîne de destination modifiée pour montrer qu'elle a changé

N'oubliez pas d'inclure l'en-tête <string.h> pour utiliser la fonction strcpy().

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

Source: [source_string]
Destination: [copied_string]
Source: [source_string]
Destination: [copied_string]
...
Modified last destination: [modified_string]

Par exemple, si l'entrée est :

3
hello
world
programming

Votre sortie devrait être :

Source: hello
Destination: hello
Source: world
Destination: world
Source: programming
Destination: programming
Modified last destination: Xrogramming

Ce défi teste votre compréhension de l'utilisation de strcpy() pour copier le contenu d'une chaîne d'un tableau de caractères à un autre, l'allocation mémoire appropriée pour les tableaux de destination, et démontre que les chaînes copiées sont indépendantes de leurs sources.

Aide-mémoire

Pour copier des chaînes de caractères en C, utilisez strcpy() de la bibliothèque <string.h>. Vous ne pouvez pas utiliser l'opérateur d'affectation (=) pour copier des chaînes car il ne copie que les adresses mémoire, pas le contenu réel.

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

char source[] = "Hello";
char destination[20];
strcpy(destination, source);  // Copie "Hello" dans destination

La fonction strcpy() prend deux arguments : le tableau de destination (où vous voulez copier) et la chaîne source (ce que vous voulez copier). Elle copie chaque caractère de la source vers la destination, y compris le terminateur nul.

Le tableau de destination doit être suffisamment grand pour contenir l'intégralité de la chaîne source plus le terminateur nul afin d'éviter un comportement indéfini.

Essayez vous-même

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

int main() {
    int n;
    scanf("%d", &n);
    
    char source[100];
    char destination[100];
    
    // TODO : Écrivez votre code ici
    // Utilisez une boucle pour traiter n opérations sur les chaînes
    // Pour chaque opération :
    // - Lire la chaîne source
    // - Utiliser strcpy() pour copier la source vers la destination
    // - Afficher les deux chaînes dans le format requis
    
    // TODO : Après la boucle, modifiez le premier caractère de la dernière destination
    // et affichez la chaîne modifiée
    
    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