• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Angel_Snake

Verificar se uma string está contida noutra

4 mensagens neste tópico

Estive a desenvolver um programa que procura uma string dentro de outra mas este não está funcionar...

O programa é este:

main()
{
   char main_string[80], sub_string[80];
   int i=0, j=0, encontra_char, existe, num_chars;

   printf("Escreva a string principal:\n");
   gets(main_string);
   printf("Escreva a string a encontrar:\n");
   gets(sub_string);

   num_chars = strlen(sub_string);

   while (main_string[i]!='\0')
   {
      if (main_string[i] == sub_string[j])
      {
         i++; j++; encontra_char = 1;
         if (j == num_chars) { j = 0; existe = 1; }
      }
      else
        if (encontra_char == 1) { j = 0; encontra_char = 0; }
        else i++;
   }

   if (existe) printf("\"%s\" existe na string principal\n");
   else printf("\"%s\" nao existe na string principal\n");
}

Estou a fazer alguma coisa mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Viva,

Pelo que percebi, queres verificar se uma string1 é igual a algo que esteja contido na string2, certo?

se é isso que pretendes, pode ser feito de uma forma muito simples usando a biblioteca string.h e usando um apontador,  a função abaixo procura dentro da string1 se existe a string2.

Devolve TRUE  se encontrar, FALSE caso contrario.

Necessita do #include <string.h>

int procuraString(const char* string1, const char* string2){
int length = strlen(string2);
char *ptr;
int i;
char copy[100]; /* vector auxiliar para comparar*/

for(i = 0; i<length;i++){
	ptr=strchr(string1,string2[i]); /* obtem a primeira ocorrencia do primeiro caracter da string2 na string1 */
	copy[i]= *ptr;/* coloca-se no primeiro caracter de copy o caracter apontado por ptr*/
}
copy[length] = '\0';/* colocar o caracter fim de string no array copy*/
if(!strcmp(copy,string2)){/* se o array copy for igual a string que queriamos encontrar entao devolvemos TRUE */
	printf("String found = %s\n",copy);
	return 1;
}
else{ printf("String not found\n");
	  return 0;/* caso contrario retornamos FALSE */
}
}

Espero ter ajudado,

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora