c語言中統計輸入的行數、單詞數與字元數
阿新 • • 發佈:2019-01-30
來源:《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; }
本題的難點在單詞的統計