1. 程式人生 > >wordcount--realized by c

wordcount--realized by c

wc.exe 編寫說明

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)

額外就是判斷一個單詞的演算法也是值得考慮的問題,我的想法是,如果這個