这就是我现在所拥有的:
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)。不确定这里有什么问题。
答案 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