你的代码逻辑有点乱,我初步看了,至少在第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或其他动态语言,对日常工作帮助会很大。
祝你成功!