wordcount--realized by c
1需要說明
1.1 概要
wc接收一個文字檔案,並統計這個文字檔案中的資訊(行數、字數等)
1.2 基本功能
wc.exe -c file.c //返回檔案 file.c 的字元數
wc.exe -w file.c //返回檔案 file.c 的單詞總數
wc.exe -l file.c //返回檔案 file.c 的總行數
wc.exe -o outputFile.txt file.c //將結果輸出到指定檔案outputFile.txt
注意:
空格,水平製表符,換行符,均算字元。
由空格或逗號分割開的都視為單詞,且不做單詞的有效性校驗,例如:thi#,that視為用逗號隔開的2個單詞。
-c, -w, -l引數可以共用同一個輸入檔案,形如:wc.exe –w –c file.c 。
-o 必須與檔名同時使用,且輸出檔案必須緊跟在-o引數後面,不允許單獨使用-o引數
2 基本思路
2.1 接受引數
引數的形式有兩種:長選項、短選項,選項間可以組合,長選項用空格隔開各個引數
例: wc.exe --word --charater file.c
短選項可以多個直接疊加或者,也像長選項一樣分開寫
例: wc.exe -wc file.c
wc.exe -w -c file.c
對於一個命令列程式,它可以接受來自命令列的引數。
c語言的main函式中有兩個引數:int main (int argc, char *argv[])
argc 一個整數,代表有多少個命令列引數,在此注意兩個點
1、 引數間是用空格格開的;
2、程式名是第一個引數。
argv[i]是一個指標,指向第i個引數的首地址
理解了以上的兩人個引數就簡單了,只需要做一些基本的字串處理就可以了。
2.2.1 -h引數
這個引數單獨說是因為這個引數不能和別的引數混用,所以我在程式裡面是單獨寫的,一開始就判斷是否使用者需要的是help幫助,如果是的話,那麼完全不必要再執行程式(開啟檔案),直接exit中止程序。
2.2.2 -w -c -l 引數
這三個引數都是一個路數:
1、開啟檔案;
2、判斷要做的操作;
3、執行操作。
它們間只有步驟3是不同的,所以有理由把3寫成不同的函式,再由2判斷執行哪個。
有一些細節問題是可以考慮的。
比如,因為單複數的關係,有一行/個 單詞/字母,應該是不同的表達(是否有s)
額外就是判斷一個單詞的演算法也是值得考慮的問題,我的想法是,如果這個