-2

以下のスニペットは、単語を取得し、出現回数とともに出力する私のプログラムからのものです。

特定のエントリが以前に保存されたことを「忘れ」、それに関連付けられたカウンタをインクリメントしないことを除いて、ほぼ正常に機能します。

typedef struct {
    char *word;
    int occ;
}
words;
words *data=NULL;

int main(int argc, char **argv)
{
    char *word;
    words *temp;
    int c,i,num;
    words *ptr = NULL;

    num=0;

    while(1)
    {
        c=fgetc(infile);
        if(c==EOF) break;
        if(!isalpha(c)) continue;
        else ungetc(c,infile);
        word=getword(infile);

        if(findword(word))
        {

            if(!(temp=realloc(data,sizeof(words)*(num+1))))
            { /* error handling */ }
            else
                data=temp;



        }
        else
           free(word);
    }

    /* sort procedure here, irrelevant for the purpose of topic */
    for(i=0;i<num;i++)
    {
        /*printf*/
    }

    return 0;

}

そのコードの何が問題になっていますか?

前もって感謝します!

4

2 に答える 2

0
if ((strcmp(word, ptr->word)) == 0) {
  //Do something to store the count
} 
else {
  return ptr;
}
于 2012-09-18T20:09:54.140 に答える
0

基本的な問題は、「findword」関数が実際に単語を検索していないことです。リスト内の1つのアイテムを見ているだけです。ループする必要があります。

于 2012-09-18T20:23:35.710 に答える