Ir ao conteúdo

C String palavra separadas de uma frase


Ir à solução Resolvido por Igor Vargas,

Posts recomendados

Postado

Galera estou com uma duvida nesse exercicio, basicamente é pra pegar a 3  palavras separadas de uma frase. Minha duvida é porque meu codigo esta dando erro.

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



main(){
	char frase[20]={"Ola tudo bem"};
	int x;
	char primeira[10],segunda[10],terceira[10];
	for(x=0; x<strlen(frase); x++){
		if(frase[x]==" "){
			strcpy(frase,primeira);
			primeira[x]=frase[x];
		}
	}for(x=" "+1; x<strlen(frase); x++){
		if(frase[x]==" "){
			segunda[x]=frase[x];
		}
	}for(x=strlen(frase); x>0; x--){
		if(frase[x]==" "){
		strcpy(frase,terceira);	
		}
	}for(x=0; x<strlen(terceira); x++){
		char passa[10];
				passa[x]=terceira[x];
				terceira[x]=passa[x];	
	}
	puts(primeira);
	puts(segunda);
	puts(terceira);
	
	
	
	
	
	
}

 

  • Obrigado 1
Postado

@Igor Vargas  Olá. Dentro do for, nas suas verificações, faça uso de aspas simples, q se refere a um caractere, no caso, um "espaço". Fazer uso d aspas duplas, como está fazendo, não irá te retornar o resultado esperado, pois você estaria comparando um caractere com um string

Outro ponto é q no segundo for você começa o mesmo com x = " " + 1. Mas essa operação não vai funcionar. Para essa inicialização seria preciso o uso de aspas simples também, só q o q acontece é que o caractere "espaço" representado por '  ' seria somado com 1 e isso retornaria o valor 33, pois esse caractere, nessa operação, seria convertido para um int, o valor 32, de acordo com a tabela ASCII. Creio q não seja isso q você quer

Dentro do for, nas suas verificações, seria isso:

 

if(frase[x] == ' ') {
    strcpy(frase, primeira);
    primeira[x] = frase[x];
}

 

Postado
3 minutos atrás, giu_d disse:

@Igor Vargas  Olá. Dentro do for, nas suas verificações, faça uso de aspas simples, q se refere a um caractere, no caso, um "espaço". Fazer uso d aspas duplas, como está fazendo, não irá te retornar o resultado esperado, pois você estaria comparando um caractere com um string

Outro ponto é q no segundo for você começa o mesmo com x = " " + 1. Mas essa operação não vai funcionar. Para essa inicialização seria preciso o uso de aspas simples também, só q o q acontece é que o caractere "espaço" representado por '  ' seria somado com 1 e isso retornaria o valor 33, pois esse caractere, nessa operação, seria convertido para um int, o valor 32, de acordo com a tabela ASCII. Creio q não seja isso q você quer

Dentro do for, nas suas verificações, seria isso:

 


if(frase[x] == ' ') {
    strcpy(frase, primeira);
    primeira[x] = frase[x];
}

Arrumei e mesmo assim ele ta dando um erro na hora de printar, sobre o segundo for n estou conseguindo pegar a palavra do meio, pensei q desse jeito era possível.

 

  • Curtir 1
Postado

@Igor Vargas         você precisa inicializar essas variáveis char primeira segunda terceira , e na hora de pegar os caracteres de cada palavra precisa de hum contador  e uma referencia para cada posição na variável para cada variável ,  então seu código com algumas modificações ficaria assim  :

#include <stdio.h>
#include <string.h>
int main(){
    char frase[20]={"Ola tudo bem"};
    int x,cont=0,pos=0;
    char primeira[10]={' '},segunda[10]={' '},terceira[10]={' '};
    for(x=0; x<strlen(frase); x++){
        if(frase[x] != " " && cont == 2){
            terceira[pos] = frase[x];
        }
        if(frase[x] != " " && cont == 1){
            segunda[pos] = frase[x];
        }
        if(frase[x] != " " && cont == 0){
            primeira[pos] = frase[x];
        }
        pos++;
        if(frase[x] == ' '){    
            cont++;
            pos=0;
        }
    }
    puts("Aqui estão As Tres Palavras");
    puts(primeira);
    puts(segunda);
    puts(terceira);
    return 0;
}

 

  • Curtir 1

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!