Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Igor Vargas

C RESOLVIDO String palavra separadas de uma frase

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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];
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@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;
}

 

Editado por devair1010
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Obrigado pela ajuda n tinha pensado desse jeito.

@devair1010

Editado por Igor Vargas
  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×