linux中 wc 命令的简单实现
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内部其实也是这么做的,甚至都是这么写的。
我把功能抽出来 加上一些注释 大家可以自己体会一下 代码一开始不太好理解 。其实实现很简单。。。。。。
当然还有更简单便捷的写法。。有想法的同学可以贴一下自己的代码。。。。

浙公网安备 33010602011771号