Ir ao conteúdo
  • Cadastre-se

C Retirar espaço em branco de uma string juntando uma palavra a outra


immoraesz

Posts recomendados

Fazer um programa para ler uma string e transferir as consoantes para um vetor e as vogais para outro. Ao final, imprima cada um dos vetores.

 

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int main(){
    char frase[20], vogal[20], consoante[20];
    int j, k, tam, v = 0, c = 0;
    
    fflush(stdin);
    
    fgets(frase, 20, stdin);
    
    tam=strlen(frase);
    
    for(j=0;j<tam;j++){
        if(toupper(frase[j])=='A'||toupper(frase[j])=='E'||
           toupper(frase[j])=='I'||toupper(frase[j])=='O'||
           toupper(frase[j])=='U')
        {
            vogal[v++] = frase[j];/*acessa a posição e depois incrementa a variável*/
        }
        else{
            k=(int)frase[j];      /* pega o código ascii do caractere */
            if( k > 64 || k < 91 ||/* letras maiúsculas */
                k > 96 || k < 123 )/* letras minúsculas*/
                consoante[c++]=frase[j];
        }
    }
    vogal[v++]='\0';
    consoante[c++]='\0';
    printf("Vetor de vogais: ");
    for(v=0;v<tam;v++)
    {
        if(vogal[v]=='\0')break;
        printf("%c",vogal[v]);
    }
    printf("\nVetor de consoantes: ");
    for(c=0;c<tam;c++)
    {
        if(consoante[c]=='\0')break;
        printf("%c",consoante[c]);
    }

    return 0;
}

 

O programa realiza tudo certinho, mas se for mais de uma palavra (ex. Hello World) fica:

Vetor de vogais: eoo

Vetor de consoantes: Hll Wrld

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help.

  • Amei 1
  • Triste 1
Link para o comentário
Compartilhar em outros sites

@immoraesz Complicada sua situação aqui no fórum :D

Nada leu dos outros tópicos sobre como usar fgets(), e agora quer ajuda em um programa que não foi você que escreveu...

Se algum colega quiser dar a resposta de bandeja novamente, fiquem a vontade, freguês satisfeito sempre volta 🤪

De qualquer forma, se quiser se esforçar o mínimo, leia esse trecho e descubra o erro:

35 minutos atrás, immoraesz disse:
            if( k > 64 || k < 91 ||/* letras maiúsculas */
                k > 96 || k < 123 )/* letras minúsculas*/

Mesmo copiando o código, não conseguiu copiar direito.

  • Amei 1
  • Haha 1
Link para o comentário
Compartilhar em outros sites

2 horas atrás, immoraesz disse:

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help.

É só fazer uma condicional para desconsiderar o espaço. Ou então teste os caracteres da string com a função isalpha que retorna diferente de zero se for uma letra do alfabeto.

 

E não precisa de outros loops para mostrar as letras, passe direto para o printf,

printf("%s\n%s\n", vogal, consoante);

 

  • Curtir 2
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 20/01/2022 às 15:07, immoraesz disse:

O programa realiza tudo certinho, mas se for mais de uma palavra (ex. Hello World) fica:

Vetor de vogais: eoo

Vetor de consoantes: Hll Wrld

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help

 

Consegue achar a parte em "seu"  programa em que testa pela presença do espaço???

 

Não use esses números mágicos. Em nada ajuda. Use o trivial: 'a' é isso. Não fica mais fashion escrevendo 97 por exemplo.

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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