日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

WordCount扩展与优化

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WordCount扩展与优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

合作者:201631062327,201631062128
碼云地址:https://gitee.com/LIUJIA6/WordCount3

一:項目說明

本次項目是在上次作業WorldCount的基礎上,利用結對編程的思想,完成對WorldCount項目的功能擴展

-s 遞歸處理目錄下符合條件的文件。(實現)
-a 返回更復雜的數據(代碼行 / 空行 / 注釋行)。(實現)
空行:本行全部是空格或格式控制字符,如果包括代碼,則只有不超過一個可顯示的字符,例如“{”。
其中,代碼行:本行包括多于一個字符的代碼。
空 行:本行全部是空格或格式控制字符,如果包括代碼,則只有不超過一個可顯示的字符,例如“{”。
注釋行:本行不是代碼行,并且本行包括注釋。一個有趣的例子是有些程序員會在單字符后面加注釋。[file_name]: 文件或目錄名,可以處理一般通配符。

二:部分代碼

基礎功能:測試返回單詞數,字符數,行數

int countw(char *file)//返回文件詞的數目 
{ FILE *f;
f=fopen(file,"r");
char ch;
if(NULL==(f=fopen(file,"r")))
{
printf("文件");
}
else
while(!feof(f))
{
ch=fgetc(f);
if((ch >= 'a'&&ch <= 'z')||(ch>='A'&&ch<='Z')||ch=='_')
aword=1;
else if (aword)
{
cword++;
aword=0;
}
}
fclose(f); printf("單詞數:%d ",cword);
}
int countc(char *file) //返回文件的字符數 
{ FILE *f;
f = fopen(file, "r");
char a;
if(NULL==(f=fopen(file,"r")))
{
printf("file is NULL");
}
else
while (!feof(f))
{
a=fgetc(f);
if (a != ' '&&a != '\n'&&a != '\t')
cchar++;
}
fclose(f);printf("字符數:%d ",cchar);
}
int countl(char *file) //返回文件的行數
{ FILE *f;
f = fopen(file, "r");
int cline = 0;
char a;
if(NULL==(f=fopen(file,"r")))
{printf("file is NULL");}
else while(!feof(f))
{
a=fgetc(f);
if(a=='\n'||a=='\t')
cline++;
}fclose(f);printf("行數:%d ",cline);
return 1;
}

?

拓展功能:測試返回代碼行,注釋行,空行和txt文件數

int count_blankline(char *file) //返回文件的空行數 
{ FILE *f;
int b_num = 0;
int ch_num = 0;
char ch;
f = fopen(file, "r");
if(NULL==(f=fopen(file,"r")))
{
printf("file is NULL");
}
else
while (!feof(f))
{
ch= fgetc(f);
if (ch=='\n'){
if (ch_num<= 1)
b_num++;
ch_num = 0;
}
else if (ch!=' '&&ch!='\t'&&ch!='}')
ch_num++;
else if(ch=='}')b_num++;
}
fclose(f);printf("空行數:%d ",b_num);
}
int count_noteline(char *file) //返回文件的注釋行數 
{ FILE *f;
int ch_num = 0;int note_num=0;
char ch;
f=fopen(file, "r");
if(NULL==(f=fopen(file,"r")))
{
printf("文件不存在");
}
else
while (!feof(f))
{
ch= fgetc(f);
if(ch=='\n'){if(ch_num==2) note_num++; ch_num=0;}
else if(ch=='/') ch_num++;
else if(ch_num==1){if(ch=='/') ch_num++;} 
} 
fclose(f);
printf("注釋行:%d ",note_num);
} 
int count_codeline(char *file)//返回文件的代碼行數 
{ int ch_num = 0;
int code_num=0;
FILE *f;
int tag=0; int flag=0;
char a; 
f = fopen(file, "r");
if(NULL==(f=fopen(file,"r")))
{printf("文件不存在");}
else
while (!feof(f))
{
a=fgetc(f);if(flag==2) {
flag=0;tag++;}
else{if(a=='\n'&&ch_num>1)
{code_num++; 
ch_num=0;    }
else if(a != ' '&&a != '\n'&&a != '\t'&&a!='/') {
ch_num++;}else if(a=='/'){ flag++;}
}}fclose(f); printf("代碼行數:%d ",code_num-tag); 
}
int searchfile(void) //尋找文件夾中的txt文件
{
struct _finddata_t filefind;
long handle;
int t=0;if( (handle=_findfirst( "d:\\wordcount\\*txt", &filefind)) == -1L ) 
{
printf( "沒找到txt文件\n");
}
else
do{
t++;
printf("找到文件:%s\n", filefind.name); 
}while (_findnext(handle,&filefind)==0);_findclose(handle);printf("txt文件數量:%d\n",t);
return 0;
}

?

三:單元測試

由于本次項目采用傳統的C語言,就沒有很好的工具可供使用。于是我們就手寫了部分功能的單元測試(單元測試大同小異,選了幾個單元進行測試)。

首先是字符數統計的測試

int countc(char *file); 
int main ()
{FILE *fpt;char filename[30];printf("輸入測試文件\n");scanf("%s",&filename) ;fpt=fopen(filename, "rb");countc(filename);return 0;} 

輸入正確的txt文件名,輸出結果如下

然后是注釋行統計的測試

int count_noteline(char *file);
int main ()
{FILE *fpt;char filename[30];printf("輸入測試文件\n");scanf("%s",&filename) ;fpt=fopen(filename, "rb");count_noteline(filename);return 0;} 

同樣,測試結果如下

?

四:總結

通過這次的結隊編程合作,了解到了在團隊合作時應該具備的基本素質,需要和隊友及時溝通,完成代碼的結合配對。同時本次過程中對WordCount的功能有了更加全面的了解與掌握,也對單元測試有了更深的了解。

?

轉載于:https://www.cnblogs.com/WLYW/p/9826403.html

總結

以上是生活随笔為你收集整理的WordCount扩展与优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。