[Ajuda] Comparação strings em c

HuSa

Power Member
Boas

Eu tenho que fazer um programa em que cria um dicionário com algumas palavras e uma string.
Depois tenho que verificar quais palavras do dicionário existem na string e contar o numero de vezes que estas existem.

Ao implementar isto fiz este código mas a funçao strcmp não está a comparar, não sei porque.
Gostaria que alguem me pode-se ajudar.
Código:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define D_SIZE 5


char dictionary[D_SIZE][20] = {};
void find_words(char *s);

int main(){
       char palavras[20],*frase[100];
       int n,i=0,k,j;
       for (i=0;i<D_SIZE;i++){
           printf("--insira a %d palavras do dicionario--\n",i+1);
           gets(palavras);
           for (k=0;k<strlen(palavras);k++){
               dictionary[i][k]=palavras[k];
           }                 
       }
       printf("insira a frase a ser verificada\n");
       gets(frase);    
       //Passar a string frase para um vector de palavras
       find_words(&frase);
       system("PAUSE");
}

void find_words(char *frase){
       int i=0,j,k,count[D_SIZE];
       char * pch, *vect[20];
       pch = strtok (frase," ");
       while (pch != NULL)
       {
         vect[i]=pch;
         pch = strtok (NULL, " ");
         i++;
       }
       int cont[i-1];
       for(j=0;j<D_SIZE;j++)
       {
           count[j]=0;                 
           for(k=0;k<i;k++)
           {
               if (strcmp(vect[k],dictionary[j])==0);
               {
                   count[j]=count[j]+1;
               }
           }
       }
       for(j=0;j<D_SIZE;j++)
       {
           if(count[j]>0)
               printf("A palavra %s existe %d\n",dictionary[j],count[j]);
       }
}
 
Boas, mas o dictionary n era de dimensão dupla? Estás a usalo na comparação com 1 dimensão :/.

Código:
if (strcmp(vect[k],dictionary[j][k])==0)
{ 
      count[j]=count[j]+1;
}
 
Última edição:
Boas, mas o dictionary n era de dimensão dupla? Estás a usalo na comparação com 1 dimensão :/.

Código:
if (strcmp(vect[k],dictionary[j][k])==0)
{ 
      count[j]=count[j]+1;
}

A outra direcção é o numero de caracteres que o vector pode levar.
Por isso não é necessário fazer isso.
 
Esquece :). Tens razão, as strings sempre deram problemas, e já n brinco com c à que tempos :). Não tenho compilador para te testar isso, senão até te tentava ajudar :(.
 
Esquece :). Tens razão, as strings sempre deram problemas, e já n brinco com c à que tempos :). Não tenho compilador para te testar isso, senão até te tentava ajudar :(.

Obrigado na mesma.

Eu tive que fazer a defesa disto e nem o professor consegui resolver o problema.
Mas gostaria de saber qual é o problema, pois na teoria devia funcionar bem.
 
Back
Topo