统计输入中的行数,单词数,字符数

   源于《The C Programming Language》P14的一道例题:

   统计输入中的行数,单词数,字符数(单词的定义:其中不包括空格,制表符,换行符的字符序列)    

     #include <stdio.h>

     #define   IN      1

     #define   OUT   0

     int main()

     {

            int c, nl, nw, nc, state;

            state = OUT;

            nl = nw = nc = 0;

            while((c = getchar()) != EOF)

                    ++nc;

                    if(c == '/n')

                           ++nl;

                    if(c == ' ' || c == '/t' || c == '/n')

                           state = OUT;

                    else if(state == OUT)

                    {

                           state = IN;

                           ++nw;

                    }

            return 0;

     }

     1,  对于第二个if语句,当出现这些字符时,认定一个单词已经结束,故将state赋值为OUT,这一点在设计的时候不太容易想到。

     2,  用两个分开的if语句的清晰度高于一个if-else语句(谨针对本例),因为第二个if语句是个if-else语句,如果在第二个ifz之前加上else

          会增加阅读的难度。

posted on 2011-07-10 15:41  将军之盾  阅读(416)  评论(0编辑  收藏  举报