在指针的帮助下,文本文件中单词的频率

Frequency of word in text file with help of pointer

本文关键字:文件 单词 文本 频率 指针 帮助      更新时间:2023-10-16

如果我的文件中包含了我必须计算其频率的单词,那么它将比实际值多出一个从另一方面来说也没问题。

int n=0;
char search[40];
cin>>search;
char* a=search;
while(fin){
char c[40];
fin>>c;
char* b=c;
if(*a==*b)
n++;
}
cout<<n;

即使我使用strcmp,我该如何克服这个问题,仍然会发生同样的事情。

您的问题在于如何设置循环。

while(fin)将检查fin是否有效,直到调用fin >> c失败(可能在文件末尾(。因此,即使你已经阅读了所有要阅读的内容,你仍然会再次进入循环,运行fin >> c,它会失败,对c没有任何作用,然后运行与之前迭代相同的比较。

相反,我会将其重构为:

int n = 0;
char search[40], tmp[40];
cin >> search;
char* a=search;
while(fin >> tmp){
char* b = tmp;
if(strcmp(a, b) == 0) { n++; }
}
cout<<n;

在此处查看它的工作情况(stdin中的所有内容(:https://ideone.com/sWZtHp