Ir ao conteúdo
  • Cadastre-se
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.

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

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

×