這篇文章將為大家詳細講解有關使用c語言編寫wc命令統(tǒng)計字符數、單詞數、行數的案例,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
目前累計服務客戶上1000+,積累了豐富的產品開發(fā)及服務經驗。以網站設計水平和技術實力,樹立企業(yè)形象,為客戶提供網站建設、網站設計、網站策劃、網頁設計、網絡營銷、VI設計、網站改版、漏洞修補等服務。成都創(chuàng)新互聯公司始終以務實、誠信為根本,不斷創(chuàng)新和提高建站品質,通過對領先技術的掌握、對創(chuàng)意設計的研究、對客戶形象的視覺傳遞、對應用系統(tǒng)的結合,為客戶提供更好的一站式互聯網解決方案,攜手廣大客戶,共同發(fā)展進步。我們知道linux操作系統(tǒng)上有一個非常常用的命令,用來統(tǒng)計字符數、單詞數以及行數的wc命令。使用c語言來編寫一個類似功能的程序
編寫該程序時,需要掌握兩個函數的用法,getchar()以及putchar()。
getchar用來從標準輸入中讀取一個字符,而putchar則是向標準輸出打印一個字符。統(tǒng)計標準輸入字符數比較簡單,只要getchar函數還能讀入字符,統(tǒng)計字符數的變量就自增加1。統(tǒng)計行數也簡單,只要讀入的字符為換行符\n則將統(tǒng)計函數的變量自增加1。
這里的主要難點在于如何統(tǒng)計單詞的數量,這里我的思路是,設定一個狀態(tài)變量IN_WORD,當讀入的字符是空白字符時(空格、水平制表符、換行符都為空白字符),IN_WORD值為0,統(tǒng)計的單詞數目不變,當等到讀入一個非空白字符時,統(tǒng)計單詞的數目加1,IN_WORD值為1,當該狀態(tài)值為1時,即使讀入了非空白字符,單詞統(tǒng)計的數目也不變動。
下面,貼出代碼
#include#include #define IN_WORD 1 #define OUT_WORD 0 void main (void) { int nc,nw,nl; char c,word_flag; nc = nw = nl = 0; word_flag = OUT_WORD; while ((c = getchar()) != EOF) { nc ++; if (c == '\n') { nl ++; } if (!isspace(c) && word_flag == OUT_WORD) { nw ++; word_flag = IN_WORD; } else if (isspace(c) && word_flag == IN_WORD) { word_flag = OUT_WORD; } } printf("%d\t%d\t%d\n", nc, nw, nl); }
上述代碼還是非常的簡單的,nc,nw,nl三個變量分別來統(tǒng)計字符數、單詞數以及行數。而word_flag是用來記錄狀態(tài)的,狀態(tài)分為兩種,IN_WORD以及OUT_WORD。
接下來,我們來測試下上述代碼。下面是一段文本:
Product-minded engineers are developers with lots of interest in the product itself. They want to understand why decisions are made, how people use the product, and love to be involved in making product decisions. They're someone who would likely make a good product manager if they ever decide to give up the joy of engineering. I've worked with many great product-minded engineers and consider myself to be this kind of developer. At companies building world-class products, product-minded engineers take teams to a new level of impact.
上述文本共有86個單詞,共五行。
# cat 1.txt | ./a.out 542 86 5
可以看到,該程序可以正常統(tǒng)計字符數、單詞數以及行數。
關于使用c語言編寫wc命令統(tǒng)計字符數、單詞數、行數的案例就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。