Invertir una cadena utilizando puntero

CBeginner
Practicar Ahora

Introducción

Los punteros proporcionan acceso directo a la memoria, y al utilizar punteros, podemos acceder y manipular los valores y direcciones de variables y matrices en memoria. El programa que construiremos en este laboratorio utilizará variables puntero para invertir una cadena dada.

Nota: Debes crear el archivo ~/project/main.c tú mismo para practicar la codificación y aprender cómo compilar y ejecutarlo utilizando gcc.

cd ~/project
## crear main.c
touch main.c
## compilar main.c
gcc main.c -o main
## ejecutar main
./main

Declarar variables de cadena

Comenzaremos declarando dos arrays de caracteres: uno para la cadena original y otro para la cadena invertida.

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

Declarar variables de puntero

Ahora, declararemos dos variables puntero: una para apuntar al primer elemento de la cadena 'str', y la otra para apuntar al primer elemento de la cadena invertida'rev'.

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

Obtener entrada del usuario

Le pediremos al usuario que ingrese una cadena que desee invertir utilizando la función scanf:

printf("Enter a string: ");
scanf("%s", str);

Encontrar el final de la cadena

Necesitamos encontrar el final de la cadena para poder comenzar a recorrerla en orden inverso. Utilizaremos un bucle while para incrementar sptr hasta que apunte al carácter nulo al final de la cadena.

while(*sptr)
{
   sptr++;
}

Dar la vuelta a la cadena

Ahora, utilizaremos un bucle while para recorrer la cadena str en orden inverso. Decrementaremos sptr para movernos desde el carácter nulo hasta el último carácter de la cadena, y para cada elemento de la cadena, almacenaremos el valor en la cadena invertida rev utilizando el operador *.

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

Agregar el carácter nulo al final de la cadena invertida

Se llegó al final de la cadena invertida. Debemos agregar el carácter nulo al final de la cadena invertida:

*rptr = '\0';

Copiar la cadena invertida a la cadena original

Ahora copiaremos la cadena invertida a la cadena original.

strcpy(str, rev);

Imprimir la cadena invertida

Finalmente, imprimiremos la cadena invertida.

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

Resumen

En este laboratorio, aprendimos cómo utilizar variables de puntero para invertir una cadena dada. Los punteros proporcionan acceso directo a la memoria y, al utilizarlos, podemos acceder y manipular los valores y direcciones de variables y matrices en memoria. Utilizamos un bucle while para recorrer la cadena en orden inverso, almacenamos la cadena invertida en una nueva matriz de caracteres y agregamos un carácter nulo al final de la cadena invertida. Finalmente, copiamos la cadena invertida a la cadena original e imprimimos la misma.