1. 程式人生 > >c語言中統計輸入的行數、單詞數與字元數

c語言中統計輸入的行數、單詞數與字元數

來源:《c程式設計語言》

功能需求:

寫個函式,用於統計輸入的行數、單詞數與字元數。這裡對單詞的定義比較寬鬆,它是任何其中不包含空格、製表符或換行符的字元序列。

程式碼如下:

#include <stdio.h>
#define IN 1
#define OUT 0
void wc(){
    char c;
    int char_num,word_num,line_num,state;
    char_num=word_num=line_num=0;
    state=OUT;
    while((c=getchar())!=EOF){
        //不管輸入的是什麼字元,都需要統計
        char_num++;
        if(c=='\n'){       
            line_num++;
        }
        if(c=='\n' || c=='\t' || c==' '){
            //遇到以上字元,輸入字元在單詞外
                state=OUT;
        }else if(state==OUT){
        //else說明輸入的不是換行,空格及製表位;換言之,就是合法的字元;
        //如果不對state進行判斷,那麼word_num會統計所有的合法字元
    //什麼時候對word_num加1?當現在的狀態是在單詞外,接受到的字元是合法字元時,表示一個新的單詞開始,這才要加1,還要更新狀態位
            state=IN;
            word_num++;
        }
        }
 
 
    printf("line_num=%d\nword_num=%d\nchar_num=%d\n",line_num,word_num,char_num);
}
int main(){
    wc();
    return 0;
}


本題的難點在單詞的統計