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

   源于《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

          会增加阅读的难度。

 

 

 

你可能感兴趣的:(c)