C語言實現WC


項目要求

Github:https://github.com/YgR9710/c-WordCount

一、基本功能

  1. 統計文件字符數  -c  (實現)
  2. 統計文件詞數     -w    (實現)
  3. 統計文件行數      -l  (實現)

二、擴展功能

  1. 遞歸處理目錄下符合條件的文件。                             -s          (未實現)
  2. 返回更復雜的數據(代碼行 / 空行 / 注釋行)。

三、高級功能

  1. 基本的Windows GUI 程序操作
    支持通過圖形界面選取文件                                        -x          (未實現)
    支持通過圖形界面展現文件的信息

四、設計思路

   由於只實現了基本功能,因此不需要太過於復雜的設計。針對不同的功能設計一個函數去實現即可。

五、具體實現

   1、統計字符數代碼

int charCounter(char *fName)
{
    FILE *fp; if((fp=fopen(fName,"r"))==NULL) { printf("CAN'T OPEN THE FILE"); exit(0); } char ch; int cCount=0; while(!feof(fp)) { ch=fgetc(fp); if(ch!=EOF)cCount++; } fclose(fp); return cCount; }

   2、統計詞數代碼

int wordCounter(char *fName)
{
    FILE *fp; if((fp=fopen(fName,"r"))==NULL) { printf("CAN'T OPEN THE FILE"); exit(0); } char ch1,ch2; int n=1; int wCount=0; while(!feof(fp)) { ch1=fgetc(fp); if(n==1) { if(ch1!=' '&&ch1!='\n'&&ch1!='\''&&ch1!='\"'&&ch1!='\?'&&ch1!='\\'&&ch1!='\a' &&ch1!='\b'&&ch1!='\f'&&ch1!='\r'&&ch1!='\t'&&ch1!='\v'&&ch1!=EOF) { wCount++; } n--; ch2=ch1; continue; } if(ch1!=' '&&ch1!='\n'&&ch1!='\''&&ch1!='\"'&&ch1!='\?'&&ch1!='\\'&&ch1!='\a'&&ch1!='\b' &&ch1!='\f'&&ch1!='\r'&&ch1!='\t'&&ch1!='\v'&&ch1!=EOF&&(ch2==' '||ch2=='\n')) { wCount++; } ch2=ch1; } fclose(fp); return wCount; }

   3、統計行數代碼

int lineCounter(char *fName)
{
    FILE *fp; if((fp=fopen(fName,"r"))==NULL) { printf("CAN'T OPEN THE FILE"); exit(0); } char ch; int n=1; int lCount; while(!feof(fp)) { ch=fgetc(fp); if(n==1) { if(ch==EOF)lCount=0; else lCount=1; n--; } if(ch=='\n') { lCount++; } } fclose(fp); return lCount; }

六、測試用例

七、測試結果

八、PSP

PSP2.1

Personal Software Process Stages

預估耗時(分鍾)

實際耗時(分鍾)

Planning

計划

 20

 30

· Estimate

· 估計這個任務需要多少時間

 30

 60

Development

開發

360

600

· Analysis

· 需求分析 (包括學習新技術)

 60

 120

· Design Spec

· 生成設計文檔

 30

 60

· Design Review

· 設計復審 (和同事審核設計文檔)

 20

 20

· Coding Standard

· 代碼規范 (為目前的開發制定合適的規范)

 20

 20

· Design

· 具體設計

 60

 60

· Coding

· 具體編碼

 120

 360

· Code Review

· 代碼復審

 30

 30

· Test

· 測試(自我測試,修改代碼,提交修改)

 60

120

Reporting

·報告

 60

120 

· Test Report

· 測試報告

 30

60 

· Size Measurement

· 計算工作量

 30

 60

· Postmortem & Process Improvement Plan

· 事后總結, 並提出過程改進計划

30 

60 

合計

 

 620

 1150

 

九、總結

   這次的項目設計雖然基本功能不太難實現,但是由於采用的是c語言,所以在擴展功能與高級功能的部分處理起來十分麻煩,因此在知識有限的情況下便沒有繼續去實現。總的來說這種類型的項目能夠使我們系統地去分析需求、設計和實現功能,對我們是一次很好的鍛煉機會和經驗積累,有助於我們更高效地去完成任務。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com