Ir ao conteúdo
  • Cadastre-se

Apagar determinada letra de uma string


Posts recomendados

Boa tarde!
 
Tenho um exercício onde devo informar:
 
1 letra
1 frase
 
O programa deve correr a string da frase e onde tiver a letra que informei, deve ser apagado da string.
 
Ex:
 
Frase: "Feliz Pascoa!"
Letra: "a"
 
Resultado: "Feliz Psco!"
 
Fiz esse código:
 

#include <stdio.h>

#include <string.h>

 

int main(){

char letra, frase[81];

int i=0;

printf("Digite uma frase.\n");

fgets(frase,sizeof(frase),stdin);

printf("Digite uma letra.");

letra=getchar();

 

for(i=0;i<81;i++){

  if (frase==letra){

      frase=frase[i+1];

  }

  if (frase==frase[i-1]){

      frase=frase[i+1];

  }

}

 

printf("Frase alterada:\n");

printf(frase);

}

 
Só ta apagando a primeira letra achada na string, nas demais não acontece nada.
 
O que tá rolando de errado aí galera?? 

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Miguel Gustavo Wilbert

Seria melhor fazer da seguinte forma.

 

Crie um while, faça a procura da letra como você fez aqui:

 if (frase[i]==letra){      frase[i]=frase[i+1];  }

Mas não incremente. 

Coloque um else e jogue o incremento lá: i++;

 

Explicando: Ele vai procurar a letra. Se achar, vai ser substituída pela letra seguinte. Ele vai passar no while novamente verificando aquela mesma posição, já com a letra trocada.

Senão ele só incrementa.

 

Fiz uns ajustes:

#include <stdio.h>#include <string.h> int main(){char letra, frase[81];int i=0;printf("Digite uma frase.\n");fgets(frase,sizeof(frase),stdin);printf("Digite uma letra.");letra=getchar();while(i<81){  if (frase[i]==letra){     int j;     for(j=i; j<81; j++)              frase[j]=frase[j+1];  }  else      i++;} printf("Frase alterada:\n");printf(frase);getch();}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...