1. 程式人生 > >第二次作業(WordCount)

第二次作業(WordCount)

argc com 技術分享 內部 .com 復雜 輸入 程序代碼 獲取

1 Github項目地址:https://gitee.com/DamonGetup/WordCount/tree/master

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 //將結果輸出到指定文件outputFile.txt

擴展功能:wc.exe -s //遞歸處理目錄下符合條件的文件

wc.exe -a file.c //返回更復雜的數據(代碼行 / 空行 / 註釋行)

wc.exe -e stopList.txt // 停用詞表,統計文件單詞總數時,不統計該表中的單詞

3 基本思路:

由於很久沒使用C語言了,導致編寫進度進展的很慢。但根據要求進行需求分析,主要要實現的功能有:用戶的命令行輸入,文件的獲取與讀寫,文件內容遍歷,字符串匹配等。該程序代碼的結構如下, 從根據argv[]傳入的參數,條件語句判斷。來決定進行什麽功能。

4 代碼設計:

-c 返回文件字符數

技術分享圖片

-w返回文件單詞總數

技術分享圖片

-l返回文件總行數

技術分享圖片

主函數根據argv[]傳入的參數,進行條件語句判斷。來決定進行什麽功能。

int main(int argc, char* argv[])
{
FILE *fp;
while(1)
{


if((fp=fopen(argv[2],"r"))==NULL)
{
printf("FileNull\n\n\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
continue;
}


else if(!strcmp(argv[1],"-w"))
countw(argv[2]);


else if(!strcmp(argv[1],"-c"))
countc(argv[2]);


else if(!strcmp(argv[1],"-l"))
countl(argv[2]);


else if(!strcmp(argv[1],"-a"))
{
count_blankline(argv[2]);
count_noteline(argv[2]);
count_codeline(argv[2]);
}


else if(!strcmp(argv[1],"-s"))
{
searchfile();
}


else
printf("NullPoint\n");


printf("\n\n");


scanf("%s%s%s",argv[0],argv[1],argv[2]);
}
return 0;

}

5.測試思路:

采用白盒測試用例設計法覆蓋可能出現的左右情況,盡量找到代碼中可能蘊含的錯誤並改正,因此,測試設計應該覆蓋判斷中的各種邊界情況。-c test.txt,-w test.txt,-l test.txt,-c –w test.txt,-c –l test.txt,-w –l test.txt,-c –w –l test.txt,-c test.txt –o output.txt,-w test.txt –o output.txt,-l test.txt –o output.txt,-c –w test.txt –o output.txt,-c –l test.txt –o output.txt,-w –l test.txt –o output.txt,-c –w –l test.txt –o output.txt。

測試文件:

技術分享圖片技術分享圖片

測試均可通過,表示基本功能沒有問題,不一一列舉了。

6 總結:

本次作業較為倉促,有多個功能聚集在主函數內部,比較雜亂,沒有比較好的代碼優化。算法的性能還有待提高和優化,對問題的考慮可以更全面。但是加強了編程能力,讓我對時間安排有了更充分的理解,理解了上課所學習的基本內容,初步理解的測試的相關方法,希望能在今後的學習中對軟件測試有更加深刻的理解和學習

參考文獻

【1】http://www.cnblogs.com/xinz/p/5044037.html

【2】http://www.cnblogs.com/xiaobao123/p/9649693.html

【3】https://www.cnblogs.com/IHHHH/p/8612972.html

【4】https://www.jianshu.com/p/5323bca00825

第二次作業(WordCount)