如何计算单词在txt文件中出现的次数

时间:2013-11-27 21:13:01

标签: c

这就是我现在所拥有的:

int findKey(char *in, char *key, int buf){
    int count = 0;
    FILE *f;
    f = fopen(in,"r");
    char temp[buf];
    while(fgets(temp,buf,f) != NULL){
        if((strstr(temp,key))!= NULL){
            count++;
        }
    }
    fclose(f);
    return count;
}

我通读了txt文件,并查看密钥。如果我找到它然后我增加计数。但是,如果txt文件中每个类似只有一个键出现,这似乎只能起作用。例如,如果txt文件是:

key Key key key

和char *键是“key”然后count只有1但count实际上应该是3。 但是,如果txt文件是:

key
key
Key
key

然后它返回正确的计数(3)。不确定这里有什么问题。

4 个答案:

答案 0 :(得分:2)

int findKey(char *in, char *key, int buf){
int count = 0;
FILE *f;
f = fopen(in,"r");
char temp[buf];
while(fgets(temp,buf,f) != NULL){
    char *p = temp;
    while((p=(strstr(p,key)))!= NULL){
        count++;
        ++p;
    }
}
fclose(f);
return count;
}

答案 1 :(得分:1)

fgets读取一行,而strstr只会告诉您字符串是否(以及在哪里)出现在该行中。

使用另一个调用strstr的循环,直到它不再找到子字符串,即使用strstr的结果知道接下来要搜索的位置(增加1)。

答案 2 :(得分:1)

单词有终结符?像一个空间?如果是,你可以使用它来确定一个单词完成时。通过这种方式,您可以构建一个单词数组......并在此数组上工作后

答案 3 :(得分:-1)

读取整个文件或逐行读入std :: string,然后执行以下操作: Count character occurrences in a string