您的位置:首页 > 运维架构 > Linux

linux中 wc 命令的简单实现

2012-09-17 22:51 267 查看
wc命令 大家一定不会陌生 。用途很多,wc -w 文件名 通常是用来统计一个文件里 单词的个数的。

那么linux内部是如何实现的呢?

其实它是这么做的。

#include<stdio.h>
/*在单词中*/
#define IN 1
/*不再单词中*/
#define OUT 0
int main()
{
int c,nl,nw,nc,state;
/*一开始需要假设不在单词中,state实际上就是标志位*/
state=OUT;
nl=nw=nc=0;
while((c=getchar())!=EOF)
{
/*nc实际上输入了多少个字符*/
++nc;

if(c=='\n')
{
/*nl实际上就是输入的行数*/
++nl;
}

/*
*实际上这里就是先判断是否为空格 如果为空格就可以断定我们进入到下一个单词了。后面的条件判断都是不会走的。然后将标志位赋值为out
*/

if(c==' '||c=='\n'||c=='\t')
{
state=OUT;
}
/*如果不是这几种 而且刚好是out 那么就将state赋值为in 并且将nw的值+1 nw其实就是单词的数目*/
else if(state==OUT)
{
state=IN;
++nw;
}
}
printf("单词==%d",nw);

}


注释我已经加上去,大家可以自己体会一下,linux内部其实也是这么做的,甚至都是这么写的。

我把功能抽出来 加上一些注释 大家可以自己体会一下 代码一开始不太好理解 。其实实现很简单。。。。。。

当然还有更简单便捷的写法。。有想法的同学可以贴一下自己的代码。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: