当前位置: 代码迷 >> 数据结构与算法 >> 统计单词个数解决方案
  详细解决方案

统计单词个数解决方案

热度:460   发布时间:2016-05-23 09:14:12.0
统计单词个数
大家好,我刚学UNIX,有个问题,前提是   有五个目录,每个目录下至少有一个文件,怎样在UNIX下,用C统计处这些文件中单词个数的总和   ,及每个单词出现的次数,多谢大家了~~希望谁能告诉我的大致算法。

------解决方案--------------------
扫描目录下文件的方案。
DIR *dir=opendir(foldername);
struct dirent *p;
while(p=readir(dir)){
if(p-> d_name[0]== '. ')continue;//skip special and hidden files
sprintf(filename, "%s/%s ",foldername,p-> d_name);
process_a_file(filename);
}
closedir(dir);

如果你还需要判断一个文件是否是目录,可以调用stat函数
struct stat s;
stat(filename,&s);
if(S_ISDIR(s))
.....
后面就是如何统计的问题了,可以直接使用STL中map或hash_map.
hash_map效率高一些,但是不是所有编译器都支持:
#include <string>
#include <map>
using namespace std;
typedef map <string, int> word_counter_type;
word_counter_type word_counter;
然后当在代码中读到单词w时(比如类型为char *)
可以使用
string s=w;
if(word_counter.find(s)==word_counter.end())
word_count[s]=0;
word_counter[s]++;
就可以进行计数了。
最后只要使用
word_counter_type::iterator it;
for(it=word_counter.begin();it!=word_counter.end();++it){
count < <it-> first < < ', ' < <it-> second < < '\n ';
}
就可以输出所有统计结果了
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Tue Dec 12 20:19:02 CST 2017
  • 最近登录:Tue Dec 12 20:19:02 CST 2017
  • 最近登录:Tue Dec 12 20:19:02 CST 2017
  • 最近登录:Tue Dec 12 20:19:02 CST 2017
  • 最近登录:Tue Dec 12 20:19:02 CST 2017