【求检错】C程:读取一个英文文本文件,对单词进行统计,并按照出现次数从低到高排序并输出...

【实验文本】Teacher:WhenwasRomebuilt?Tom:Atnight.Teacher:Whotoldyouthat?Tom:You-did.Yousaid... 【实验文本】
Teacher: When was Rome built? Tom: At night. Teacher: Who told you that?
Tom: You-did. You said Rome wasn't built in a day.

【现在编的程序】

出现的问题
1)最后的printf输出.....根本提供不下来...
2)如果把最后的printf去掉,看前面的内容就会发现有奇怪的东西混进去了:

3)然后当出现第一个重复的节点teacher之后,后面不管有没有重复都算是重复了...:
问题一....那个是根本停不下来....
展开
 我来答
perlfan
2014-03-17 · 超过13用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:27.7万
展开全部

你的代码逻辑有点乱,我初步看了,至少在第37-39行是有问题的,这3行的意思是:如果读取的字符不是字母就继续读,可是如果到了文件末尾,你的代码也不会停下来,因为你没有调用feof(in)测试是否到达了文件末尾。

这种文本统计的问题,用C做实在费事。我用C++做过,也很费事。后来用Perl做过,只需要一行代码就够了。

perl -E "for(<>){$n{$_}++ for /(\w+)/g} say $n{$_}, ' ',$_ for sort keys %n" file.txt


你可以安装perl后,试试。

有C的基础,建议你学学Perl或其他动态语言,对日常工作帮助会很大。

祝你成功!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式