Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Ponteiros, Referências e Memória |
Como inverter uma string em C usando ponteiros - Desafio de Programação Resolvido em CQuantidade de visualizações: 635 vezes |
Pergunta/Tarefa: Escreva um programa C que pede para o usuário informar uma palavra, frase ou texto. Em seguida use ponteiros para inverter o conteúdo da string e exibí-la na tela, na forma original e com a ordem dos caracteres invertida. Sua saída deverá ser parecida com: Informe uma palavra ou frase: Gosto de C e Java A frase informada foi: Gosto de C e Java A string invertida é: avaJ e C ed otsoG Veja a resolução comentada deste exercício usando C: #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> // função principal do programa int main(int argc, char *argv[]){ // variáveis usadas na resolução do problema int i; // para controlar o laço for char frase[80]; // para guardar a string informada int tamanho; // tamanho da string // ponteiros para o início e fim da string char *ptr_inicio, *ptr_final; char temp; // precisamos de um string temporária setlocale(LC_ALL,""); // para acentos do português // vamos pedir para o usuário informar um palavra ou frase printf("Informe uma palavra ou frase: "); fgets(frase, sizeof(frase), stdin); printf("A frase informada foi: %s", frase); // agora obtemos o tamanho da string tamanho = strlen(frase); // o ponteiro *ptr_inicio aponta para o primeiro caractere // da string ptr_inicio = frase; // e o ptr_final aponta para o último caractere // atenção: coloquei "- 2" por causa da quebra de linha // inserida na string informada pelo usuário. Em outras situações // devemos colocar "- 1" ptr_final = frase + (tamanho - 2); // agora nós trocamos os caracteres do início da string // com os caracteres do final for (i = 0; i < (tamanho / 2); i++) { // temp recebe o caractere no ponteiro final temp = *ptr_final; // o ponteiro final recebe o caractere do ponteiro inicial *ptr_final = *ptr_inicio; // e o ponteiro inicial recebe o temp *ptr_inicio = temp; // aumentamos o ponteiro dos caracteres no início ptr_inicio++; // e decrementamos o ponteiros dos caracteres no final ptr_final--; } // finalmente mostramos a string invertida printf("A string invertida é: %s", frase); printf("\n\n"); system("PAUSE"); return 0; } |
![]() |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
Java - Como usar null em Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |