1. 程式人生 > >wordcount基本功能

wordcount基本功能

else odi error: name blog 文本文 老師 允許 can

代碼地址:https://gitee.com/Z_jx/codes/3c57peszqo6lh1xkudvbi84

基本功能列表:(已完成)

jjj.exe -c 2.c     //返回文件 2.c 的字符數
jjj.exe -w 2.c    //返回文件 2.c 的詞的數目  
jjj.exe -l 2.c      //返回文件 2.c 的行數
jjj.exe -o -o //手動按照順序輸入字符數,詞,行數。

擴展功能:(未完成)
-s 遞歸處理目錄下符合條件的文件。
-a 返回更復雜的數據(代碼行 / 空行 / 註釋行)

高級功能:(未完成)

-x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。

PSP2.1表格

PSP2.1

PSP階段

預估耗時

(分鐘)

實際耗時

(分鐘)

Planning

計劃

1h

1h

· Estimate

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

1h

1h

Development

開發

2h

3h

· Analysis

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

1h

2h

· Design Spec

· 生成設計文檔

1h

2h

· Design Review

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

1h

2h

· Coding Standard

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

1h

2h

· Design

· 具體設計

1h

2h

· Coding

· 具體編碼

4h

6h

· Code Review

· 代碼復審

1h

2h

· Test

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

2h

2h

Reporting

報告

1h

1h

· Test Report

· 測試報告

1h

1h

· Size Measurement

· 計算工作量

18h

27h

· Postmortem & Process Improvement Plan

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

3h

3h

合計

21h

30h

解題思路:

剛開始聽到老師說這個的時候,我一頭霧水,什麽是wordcount,然後在網上看了他們對這個的理解,我才知道什麽是wordcount,才對他有了大體的思路。

參考地址:https://www.cnblogs.com/m870100/p/9648510.html

代碼:

//讀取文件
int num,w,num1;
if(argc==3)
{
FILE *fp = fopen(argv[2],"r");
if(!fp)
{
printf("文件打開失敗!!!\n");
return -1;
}
//對文件內容字符數進行判斷
if( !strcmp(argv[1],"-c"))
{
//字符數
char temp;
num = 0;
temp = fgetc(fp);
while(temp!=EOF)
{
temp = fgetc(fp);
num++;
}
printf("該文本文件的字符數為:%d\n",num);
fprintf(fp,"%d",num);
}

//對文件內容單詞數進行讀取
if(!strcmp(argv[1],"-w"))
{
//單詞數
w=0;
char a=fgetc(fp);
while(a!=EOF)
{
if((a>=‘a‘ && a <=‘z‘) || ( a >=‘A‘ && a <=‘Z‘) || ( a >=‘0‘ && a <=‘9‘))
{
while((a>=‘a‘ && a <=‘z‘) || ( a >=‘A‘ && a <=‘Z‘) || ( a >=‘0‘ && a <=‘9‘))
a =fgetc(fp);
w++;
a =fgetc(fp);

}
else
a =fgetc(fp);
}
printf("該文本文件的單詞數為:%d\n",w);
fprintf(fp,"%d",w);

}

//對文件內容行數進行提取
if( !strcmp(argv[1],"-l") )
{
//行數
char temp;
num1 = 1;
temp = fgetc(fp);
while(temp != EOF )
{
//putchar(temp);
if(temp == ‘\n‘)
{
//字符需要用單引號擴住
num1++;
}
temp = fgetc(fp);
}
printf("該文本文件的行數為:%d\n",num1);
fprintf(fp,"%d",num1);
}

//文件輸入到指定文件。
if(!strcmp(argv[1],"-o"))
{
if(argc==3)
{

//以只寫方式打開文件。
FILE *fp1= fopen(argv[1],"w");
if(!fp)
{
printf("文件打開失敗!!!\n");
return -1;
}

//根據提示,依次輸入到指定文件。
printf("字符數,單詞數,行數:\n");
scanf("%d %d %d",&num,&w,&num1);
fprintf(fp1,"該文本文件的字符數為:%d\n",num);
fprintf(fp1,"該文本文件的單詞數為:%d\n",w);
fprintf(fp1,"該文本文件的行數為:%d\n",num1);
fclose(fp1);
}

}

//參數過大
else{
printf("error:參數超出範圍!!\n");
printf("允許參數:-c,-w,-l,-o\n");
}
int n=fclose(fp);
}


//對參數數目進行判斷。
else{
printf("error:運行參數必須要3個!!\n");
printf("use:jjj.exe [parameter] [file_name]\n");
}

//暫停運行。

system("pause");

測試結果:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

文件.

技術分享圖片

單元測試用例:

技術分享圖片

技術分享圖片

技術分享圖片

測試結果

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

文件:

技術分享圖片

總結:

我覺得這個項目對我來說i是一個挑戰以前從未接觸過的,但是同時我也覺得他十分有趣,因為我是用C語言寫的,所以相當於我又對C語言進行了一個復習,我因為自己不是很會,所以我參照老師的步驟來做的,先寫了一個PSP表格,對自己的這個項目進行了大致的評估,但是我卻錯誤的估算了代碼對我的難度,所以我的時間大大超出了我的預算,我下次一定會註意這個情況的。

wordcount基本功能