#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file;
int word;
int num,num2;
int numcount1=0,numcount2=0;
printf("Please enter a keys: ");
if (scanf("%d %d", &num, &num2)==2 ){
} else {
printf("Error:Must two integers");
}
file=fopen("data.txt","r");
while ((word=fgetc(file))!=EOF){
fprintf(stdout, "%c",word);
if (word == num) numcount1++;
if (word == num2) numcount2++;
}
printf("'%d' is found %d times in the txt file\n",num,numcount1);
printf("'%d' is found %d times in the txt file\n",num2,numcount2);
fclose(file);
return 0;
}
data.txt中
1 5 30
9 8 77
3 1 15
2 3 8
我想要输出
[1111@11111 ~]$ ./count
Please enter a keys: 1 2
'1' is found 2 times in txt file
'2' is found 1 times in txt file
我的问题是输入&#39; 1&#39;无法计算。 我试着测试(word ==&#39; 1&#39;)numcount可以计算,但也计算&#39; 15&#39;整数,共3次,也不是2次
谢谢!
答案 0 :(得分:0)
while (fscanf(file, "%d", &word)!=EOF){
if (word == num) numcount1++;
if (word == num2) numcount2++;
}
答案 1 :(得分:0)
如果您的问题只是计算文件中密钥的出现次数(只是整数),以下方法对我来说似乎很好。
使用key读取unordered_map中的完整文件,将该数字和值作为其计数。这样你的搜索就会很有效,即O(1)。这肯定比在用户的每个输入上搜索文件要好得多。
每当文件内容发生变化时,只需将其重新加载到地图中即可。