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.ctú 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.



