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:  
Riacaimi

Dúvida sobre Strings

Recommended Posts

Galera, eu estava fazendo o código abaixo e me surgiu uma dúvida que me travou.

#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){	char *entrada;	char *saida;	int n, i, q;	int compare;	entrada=(char *) malloc((n+1) * sizeof(char));	saida=(char *) malloc((n+1) * sizeof(char));			printf("Digite quantas palavras deseja entrar: \n");	scanf("%d", &n);			for(i=0; i<n; i++){			printf("");			scanf("%s", entrada);	 		}		printf("Digite quantas palavras deseja sair: \n");	scanf("%d", &q);			for(i=0; i<q; i++){			printf("");			scanf("%s", saida);		}		int comparar= strcmpi(entrada, saida);	}

Como posso fazer um "for" pra que ele compare as strings de entrada e saída? Por exemplo, digito 4 palavras na entrada e 4 na saída e preciso comparar as palavras digitadas na saída com as da entrada.

Por exemplo:

 

Entrada:

Papel, Mesa, Cadeira

Saida:

Mesa
 

Ai o "for" compararia a Saida com a Entrada e imprimiria se Saida está ou não na entrada, no caso acima Mesa estaria, mas poderia ser qualquer outra palavra. Podem me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

usa a função strstr(str1, str2). Ela vai buscar str2 em str1, si encontrar ela vai devolver um ponteiro que é a posição onde a palavra começa, si não devolve null. Exemplo:

#include <stdio.h>#include <string.h>int main () {    int i;    char frase[] = "Um simples string aqui";    char *palavra; //Esse ponteiro vai apontar aonde a palavra que voce que r buscar começa, si a palavra nao existir el vai conter null    palavra = strstr ( frase, "lol" );        if ( palavra == NULL ) {        printf ( "A palavra nao existe." );        return 1;    } else {        i = 0;        printf ( "Palavra encontrada: " );                while ( palavra[i] != ' ' ) {            printf ( "%c", palavra[i] );            i++;        }            }            return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesa é uma subsequencia da string Papel, Mesa, Cadeira.

Para descobrir isso, você pode usar bibliotecas já prontas, ou pode criar uma função que faz isso:

  Busque pela letra M

  -se encontrar, teste o próximo caractere ('e')

    -se o próximo caractere for e

      -teste o próximo

        - e assim por diante até ter testado todos caracteres de "Mesa"

  -se não

    -Busque pela próxima letra M na sequencia

    -se encontrar

      -...

  -continue ate encontrar "Mesa" ou ate chegar ao final da string "Papel, Mesa, Cadeira"

 

Não é tão difícil, já fiz em um trabalho, mas não o tenho mais.

Editado por Ian Varejao

Compartilhar este post


Link para o post
Compartilhar em outros sites

/*int comparar= strcmpi(entrada, saida); essa última linha, substitui por

 

if (strcmp (entrada, saida ==0))

 

printf("%s",entrada);

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

×