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: 761 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 calcular juros simples e composto - Calculando juros simples e montante na linguagem Java |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





