Ir ao conteúdo
  • Cadastre-se

Dúvida sobre Strings


Riacaimi

Posts recomendados

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?

Link para o comentário
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;}
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

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.

Link para o comentário
Compartilhar em outros sites

  • mês depois...
Visitante
Este tópico está impedido de receber novas respostas.

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