Inverser une chaîne de caractères à l'aide d'un pointeur

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

Les pointeurs permettent un accès direct à la mémoire, et en utilisant des pointeurs, nous pouvons accéder et manipuler les valeurs et les adresses de variables et de tableaux en mémoire. Le programme que nous allons construire dans ce laboratoire utilisera des variables pointeurs pour inverser une chaîne de caractères donnée.

Note : Vous devez créer le fichier ~/project/main.c vous-même pour pratiquer la programmation et apprendre à le compiler et à l'exécuter à l'aide de gcc.

cd ~/project
## créer main.c
touch main.c
## compiler main.c
gcc main.c -o main
## exécuter main
./main

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/UserInteractionGroup(["User Interaction"]) 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/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/while_loop -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/arrays -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/strings -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/pointers -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/user_input -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} c/output -.-> lab-123325{{"Inverser une chaîne de caractères à l'aide d'un pointeur"}} end

Déclarer des variables de chaîne de caractères

Nous allons commencer par déclarer deux tableaux de caractères : l'un pour la chaîne d'origine et l'autre pour la chaîne inversée.

char str[100];
char rev[100];

Déclarer des variables pointeur

Maintenant, nous allons déclarer deux variables pointeur : l'une pour pointer vers le premier élément de la chaîne 'str', et l'autre pour pointer vers le premier élément de la chaîne inversée 'rev'.

char *sptr = str;
char *rptr = rev;

Obtenir une entrée de l'utilisateur

Nous allons demander à l'utilisateur d'entrer une chaîne qu'il souhaite inverser en utilisant la fonction scanf :

printf("Entrez une chaîne : ");
scanf("%s", str);

Trouver la fin de la chaîne de caractères

Nous devons trouver la fin de la chaîne de caractères pour pouvoir commencer à la parcourir dans l'ordre inverse. Nous utiliserons une boucle while pour incrémenter sptr jusqu'à ce qu'il pointe sur le caractère nul à la fin de la chaîne.

while(*sptr)
{
   sptr++;
}

Inverser la chaîne de caractères

Maintenant, nous utiliserons une boucle while pour parcourir la chaîne str dans l'ordre inverse. Nous décrémenterons sptr pour passer du caractère nul au dernier caractère de la chaîne, et pour chaque élément de la chaîne, nous stockerons la valeur dans la chaîne inversée rev en utilisant l'opérateur *.

while(sptr >= str)
{
   *rptr = *sptr;
   rptr++;
   sptr--;
}

Ajouter le caractère nul à la fin de la chaîne inversée

La fin de la chaîne inversée a été atteinte. Nous devons ajouter le caractère nul à la fin de la chaîne inversée :

*rptr = '\0';

Copier la chaîne inversée dans la chaîne d'origine

Maintenant, nous allons copier la chaîne inversée dans la chaîne d'origine.

strcpy(str, rev);

Afficher la chaîne inversée

Enfin, nous allons afficher la chaîne inversée.

printf("Reversed string: %s\n", str);

Récapitulatif

Dans ce laboratoire, nous avons appris à utiliser des variables pointeurs pour inverser une chaîne de caractères donnée. Les pointeurs offrent un accès direct à la mémoire, et en les utilisant, nous pouvons accéder et manipuler les valeurs et les adresses de variables et de tableaux en mémoire. Nous avons utilisé une boucle while pour parcourir la chaîne dans l'ordre inverse, stocké la chaîne inversée dans un nouveau tableau de caractères et ajouté un caractère nul à la fin de la chaîne inversée. Enfin, nous avons copié la chaîne inversée dans la chaîne d'origine et l'avons affichée.