Concaténer des chaînes de caractères en utilisant des pointeurs

CCBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

En programmation C, nous pouvons concaténer deux chaînes de caractères à l'aide de pointeurs en pointant l'adresse de base des deux chaînes vers une variable de pointeur de type char, en incrémentant le pointeur jusqu'à la fin de la première chaîne, puis en copiant les caractères de la deuxième chaîne à la fin de la première.

Dans ce labo (LabEx), vous apprendrez à concaténer deux chaînes de caractères à l'aide de pointeurs en langage de programmation C.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c(("C")) -.-> c/CompoundTypesGroup(["Compound Types"]) c(("C")) -.-> c/PointersandMemoryGroup(["Pointers and Memory"]) c(("C")) -.-> c/FileHandlingGroup(["File Handling"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/FunctionsGroup(["Functions"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/while_loop("While Loop") c/CompoundTypesGroup -.-> c/arrays("Arrays") c/CompoundTypesGroup -.-> c/strings("Strings") c/PointersandMemoryGroup -.-> c/pointers("Pointers") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FileHandlingGroup -.-> c/create_files("Create Files") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/while_loop -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/arrays -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/strings -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/pointers -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/function_declaration -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/create_files -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/user_input -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} c/output -.-> lab-123226{{"Concaténer des chaînes de caractères en utilisant des pointeurs"}} end

Créer un nouveau fichier

Tout d'abord, ouvrez votre éditeur de texte et créez un nouveau fichier nommé main.c dans le répertoire ~/project/.

Inclure les fichiers d'en-tête

Dans cette étape, incluez les fichiers d'en-tête nécessaires dans le programme, qui sont stdio.h et stdlib.h.

#include <stdio.h>
#include <stdlib.h>

Définir la fonction main()

La fonction main() est utilisée pour définir le corps du programme C.

int main(){
  // TODO: Write code here
  return 0;
}

Déclarer des variables

Dans cette étape, déclarez deux tableaux de caractères aa et bb de taille 100 octets chacun.

char aa[100], bb[100];

Saisir des chaînes de caractères

Dans cette étape, l'utilisateur fournira les valeurs pour les deux chaînes de caractères aa et bb et les stockera à l'aide de la fonction gets().

printf("Enter the first string: ");
gets(aa);

printf("Enter the second string to be concatenated: ");
gets(bb);

Concaténer des chaînes de caractères

Dans cette étape, nous allons définir deux pointeurs de caractères a et b et commencer à concaténer la deuxième chaîne de caractères bb avec la première aa.

char *a = aa;
char *b = bb;

while(*a){
  a++;
}

while(*b){
  *a = *b;
  b++;
  a++;
}
*a = '\0';
  • *a pointe vers la prochaine adresse mémoire tant qu'il ne pointe pas vers la fin de la première chaîne de caractères aa. Cela est réalisé à l'aide de l'expression while(*a).
  • Ici, a est incrémenté vers la prochaine adresse mémoire jusqu'à ce qu'il atteigne la fin de la première chaîne de caractères aa.
  • *b pointe vers la prochaine adresse mémoire jusqu'à ce qu'il ne pointe pas vers la fin de la deuxième chaîne de caractères bb. Cela est réalisé à l'aide de l'expression while(*b).
  • Pour chaque adresse mémoire, a est assigné à la valeur pointée par b, puis tant a que b sont incrémentés. Cela est réalisé à l'aide de l'expression *a = *b; b++; a++;
  • Le '\0' représente la fin de la chaîne de caractères.

Afficher la chaîne de caractères concaténée

Dans cette étape, affichez la chaîne de caractères concaténée après la fin du processus de concaténation.

printf("\nThe string after concatenation is: %s ", aa);

Compiler et exécuter

Dans cette étape, compilez et exécutez le fichier main.c en utilisant les commandes suivantes :

gcc main.c -o output
./output

Code complet

Voici le code complet du programme de concaténation de chaînes de caractères utilisant des pointeurs :

#include <stdio.h>
#include <stdlib.h>

int main(){
  char aa[100], bb[100];

  printf("Enter the first string: ");
  gets(aa);

  printf("Enter the second string to be concatenated: ");
  gets(bb);

  char *a = aa;
  char *b = bb;

  while(*a){
    a++;
  }

  while(*b){
    *a = *b;
    b++;
    a++;
  }
  *a = '\0';

  printf("\nThe string after concatenation is: %s ", aa);

  return 0;
}

Résumé

Dans ce laboratoire, vous avez appris à concaténer deux chaînes de caractères en utilisant des pointeurs dans le langage de programmation C. Nous avons réalisé cela en pointant l'adresse de base des deux chaînes vers une variable pointeur de caractères, en incrémentant le pointeur jusqu'à la fin de la première chaîne, puis en copiant les caractères de la deuxième chaîne à la fin de la première. N'oubliez pas de compiler et d'exécuter le code pour vérifier son fonctionnement.