Introdução
Os ponteiros fornecem acesso direto à memória e, ao usar ponteiros, podemos acessar e manipular os valores e endereços de variáveis e arrays na memória. O programa que construiremos neste laboratório usará variáveis ponteiro para inverter uma string fornecida.
Nota: Você precisa criar o arquivo
~/project/main.cpor conta própria para praticar a codificação e aprender como compilar e executá-lo usando gcc.
cd ~/project
## create main.c
touch main.c
## compile main.c
gcc main.c -o main
## run main
./main
Declarar variáveis de string
Começaremos declarando dois arrays de caracteres (char arrays): um para a string original e outro para a string invertida.
char str[100];
char rev[100];
Declarar variáveis ponteiro
Agora, declararemos duas variáveis ponteiro: uma para apontar para o primeiro elemento da string 'str' e a outra para apontar para o primeiro elemento da string invertida 'rev'.
char *sptr = str;
char *rptr = rev;
Obter entrada do usuário
Pediremos ao usuário que insira uma string que ele deseja inverter, usando a função scanf:
printf("Enter a string: ");
scanf("%s", str);
Encontrar o fim da string
Precisamos encontrar o fim da string para que possamos começar a percorrê-la em ordem inversa. Usaremos um loop while para incrementar sptr até que ele aponte para o caractere nulo no final da string.
while(*sptr)
{
sptr++;
}
Inverter a string
Agora, usaremos um loop while para percorrer a string str em ordem inversa. Decrementaremos sptr para mover do caractere nulo para o último caractere da string e, para cada elemento na string, armazenaremos o valor na string invertida rev usando o operador *.
while(sptr >= str)
{
*rptr = *sptr;
rptr++;
sptr--;
}
Adicionar caractere nulo ao final da string invertida
O final da string invertida foi alcançado. Devemos adicionar o caractere nulo ao final da string invertida:
*rptr = '\0';
Copiar a string invertida para a string original
Agora, copiaremos a string invertida para a string original.
strcpy(str, rev);
Imprimir a string invertida
Finalmente, imprimiremos a string invertida.
printf("Reversed string: %s\n", str);
Resumo
Neste laboratório, aprendemos como usar variáveis ponteiro (pointer variables) para inverter uma string fornecida. Ponteiros fornecem acesso direto à memória e, usando-os, podemos acessar e manipular os valores e endereços de variáveis e arrays na memória. Usamos um loop while para percorrer a string em ordem inversa, armazenamos a string invertida em um novo array de caracteres e adicionamos um caractere nulo ao final da string invertida. Finalmente, copiamos a string invertida para a string original e a imprimimos.



