天天看點

wordcount源代碼c語言,Word Count(C語言)

1.項目位址

https://github.com/namoyuwen/word-count

2.項目相關要求

2.1 項目描述

Word Count    1. 實作一個簡單而完整的軟體工具(源程式特征統計程式)。    2. 進行單元測試、回歸測試、效能測試,在實作上述程式的過程中使用相關的工具。   3. 進行個人軟體過程(PSP)的實踐,逐漸記錄自己在每個軟體工程環節花費的時間。

2.2 WC 項目要求

wc.exe 是一個常見的工具,它能統計文本檔案的字元數、單詞數和行數。這個項目要求寫一個指令行程式,模仿已有wc.exe 的功能,并加以擴充,給出某程式設計語言源檔案的字元數、單詞數和行數。

實作一個統計程式,它能正确統計程式檔案中的字元數、單詞數、行數,以及還具備其他擴充功能,并能夠快速地處理多個檔案。具體功能要求:程式處理使用者需求的模式為:

wc.exe [parameter] [file_name]

基本功能清單:

wc.exe -c file.c     //傳回檔案 file.c 的字元數(已完成)

wc.exe -w file.c    //傳回檔案 file.c 的詞的數目  (已完成)

wc.exe -l file.c      //傳回檔案 file.c 的行數(已完成)

擴充功能:    -s   遞歸處理目錄下符合條件的檔案。    -a   傳回更複雜的資料(代碼行 / 空行 / 注釋行)。

空行:本行全部是空格或格式控制字元,如果包括代碼,則隻有不超過一個可顯示的字元,例如“{”。

代碼行:本行包括多于一個字元的代碼。

注釋行:本行不是代碼行,并且本行包括注釋。一個有趣的例子是有些程式員會在單字元後面加注釋:

} //注釋在這種情況下,這一行屬于注釋行。

[file_name]: 檔案或目錄名,可以處理一般通配符。進階功能:

-x 參數。這個參數單獨使用。如果指令行有這個參數,則程式會顯示圖形界面,使用者可以通過界面選取單個檔案,程式就會顯示檔案的字元數、行數等全部統計資訊。

需求舉例:  wc.exe -s -a *.c

傳回目前目錄及子目錄中所有*.c 檔案的代碼行數、空行數、注釋行數。

3.解題思路描述

1.首先拿到這個題目,由于隻對C語言熟悉,故想着用C語言去做,而C語言的使用已經有一段啥時間沒用了,是以在重新熟悉的時間上花費了較多的時間

2.在網上學習這個檔案的操作難點和關鍵點的時候,這個題目的一個重點是對于檔案操作,對于檔案的操作也進行學習

3.這個題目主要分為4個子產品,主函數子產品,和三個基本功能子產品

4.設計實作過程。

1.先寫出三個子函數,統計字數,單詞數和行數

2.主函數調用這三個函數

5.代碼說明。

1.主函數

#include

#include

int charc(char *file);

int wordc(char *file);

int linec(char *file);

int main(){

FILE *fp;

int ch,wo,li;

char file[50];//檔案位址

printf("\n請輸入檔案位址:\n");

scanf("%s",file);

if((fp=fopen(file,"r"))==NULL)

{

printf("不存在這個檔案");

exit(-1);

}

else{

ch=charc(file);

wo=wordc(file);

li=linec(file);

printf("\n該檔案字元數為%d\n單詞數為%d\n行數為%d\n",ch,wo,li);

}

}

2.字元數統計

int charc(char *file) {

FILE *fp = NULL;

int charcount = 0;

if ((fp=fopen(file,"r"))== NULL) {

printf("檔案尋找失敗!\n");

exit(-1);

}

char ch;

ch = fgetc(fp);

while (!feof(fp)) {

ch = fgetc(fp);//讀取檔案中的字元

charcount++;//統計字元數

}

fclose(fp);

return charcount;

}

3.單詞數統計

int wordc(char *file) {

FILE *fp = NULL;

int wordcount = 0;

if ((fp = fopen(file,"r")) == NULL) {

printf("檔案尋找失敗!\n");

exit(-1);

}

char ch;

int word;

while (!feof(fp)) {

ch = fgetc(fp);

if (ch 'Z'&&ch< 'a') || ch>'z')

{

word = 0;

}

else if (word == 0)

{

word = 1;

wordcount++;

}

}

return wordcount;

}

4.行數統計

int linec(char *file){//計算行數

int linecount=0;

char ch,li=0;

FILE *fp;

if ((fp=fopen(file,"r"))==NULL)

{

exit(-1);

}

ch = fgetc(fp);

while (!feof(fp))

{

if(ch=='\n')

linecount++;

li=ch;

}

if (li!='\n')

linecount++;

return linecount;

}

6.測試運作。

1.空檔案

wordcount源代碼c語言,Word Count(C語言)

2.一個詞檔案

wordcount源代碼c語言,Word Count(C語言)

3.一行檔案

wordcount源代碼c語言,Word Count(C語言)

4.一個典型源檔案

wordcount源代碼c語言,Word Count(C語言)

7.項目小結。

這次的個人項目,花了較長的時間在複習C語言的過程上,同時也參考了許多人的資料與間接,發現了自己在C語言上還有許多的不足,同時在編碼時想法也很混亂,基本考慮不到重要的點。

這次的項目讓自己意識到了還存在許多的不足,革命尚未完成,同志仍須努力。我還需要每天花費時間在對語言的學習上,掌握更多的知識。而這次PSP表自己的實際耗時也比預估長了許多

,主要是在于對代碼的不熟練以及在學習上花了許多時間。

PSPPersonal Software Process Stages預估耗時(分鐘)實際耗時(分鐘)Planning

計劃

50

75

· Estimate

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

20

15

Development

開發

120

150

Analysis

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

30

120

·Design Spec

生成設計文檔

20

30

·Design Review

設計複審 (和同僚稽核設計文檔)

· Coding Standard

代碼規範 (為目前的開發制定合适的規範)

5

5

·Design

具體設計

30

60

·Coding

具體編碼

100

160

·Code Review

代碼複審

30

45

·Test

測試(自我測試,修改代碼,送出修改)

10

5

Reporting

報告

10

30

·Test Report

測試報告

10

10

·Size Measurement

計算工作量

30

60

·Postmortem & Process Improvement Plan

事後總結, 并提出過程改進計劃

20

30

合計

485

795

來源:https://www.cnblogs.com/wenqinyi/p/12563649.html