git地址 | https://github.com/npcccc1/WordCount |
夥伴 | 徐睿201831061409 |
夥伴博客 | https://www.cnblogs.com/codingbyjusticexu/ |
和夥伴選擇了不一樣的語言來完成這項工做(c與c++),因此用了兩個倉庫放不一樣的項目。因爲並不在一個寢室,具體的代碼是每人本身敲的。過後的測試、代碼規範與調整則在商討以後進一步完善。html
int main() //簡單的主函數先放上 { FILE *fpa; FILE *fpb; if ((fpa = fopen("D:\\wordCount.txt", "r")) == NULL) { printf("Failure to open wordCount.txt!\n"); exit(0); } if ((fpb = fopen("D:\\Countresult.txt", "w")) == NULL) { printf("Failure to open wordCount.txt!\n"); exit(0); } countchar(fpa,fpb); wordcount(fpa,fpb); fclose(fpa); fclose(fpb); return 0; }
void countchar(FILE *a,FILE *b) //統計字符函數 { //ps:一開始想成了輸出a到z 26個字母的個數... char c; int d=0; int i=0; int p=0; int q=0; while(!feof(a)) { c=fgetc(a); if(c>=48&&c<=57) { d++; } else if(c>=65&&c<=90) { i++; } else if(c>=97&&c<=122) { p++; } else { q++; } } rewind(a); fprintf(b,"0--9\t%d\nA--Z\t%d\na--z\t%d\nSeparator\t%d\n",d,i,p,q); }
void wordcount(FILE *a,FILE *b) { int i; int q=0; char str[N][N]; while(!feof(a)) { for(i=0;;i++) { int p=0; fgets(str[i],N,a); if((str[i][p]>=97&&str[i][p]<=122)||(str[i][p]>=65&&str[i][p]<=90)) { loop:p++; //按理說不該該加goto實在不想再用循環了 while((str[i][p]>=97&&str[i][p]<=122)||(str[i][p]>=65&&str[i][p]<=90)) { p++; } if(p>=4) { if(str[i][p]>=48&&str[i][p]<=57) { do { p++; } while(str[i][p]>=48&&str[i][p]<=57); q++; goto loop; } q++; } } fprintf(b,"%d\t",q); } } }
經討論後,規範詳見此連接。對照後看了本身的代碼發現一個小壞習慣以前沒注意的——寫函數時老是空出一個製表符,致使在複雜的循環中「{}」每每由於開頭的這個Tab而向後縮進,顯得前面一大片空白,影響美觀。python
還有即是變量的取名不大規範,每每是本身爲所欲爲地取。c++
與其說是複審,其實更像在寫中改。開始編譯沒什麼問題仍是很開心的,但打開文件發現沒有打印出任何東西。上一個四則運算也是遇到了這種狀況,上次是由於&&與||有一次打錯,致使循環卡到了一處沒輸出任何算式。git
這是一開始第一次傳到github中的代碼,循環太多要處理帶數字或其餘符號的字符串是否是單詞,讓腦子有點亂,一開始沒輸出也是這個的緣由。此外也有零零散散的小錯誤,也是要多看幾遍本身就能檢查出來。爲了效率,也是由於用的不一樣的語言不一樣的方法,沒再讓同伴互查。github
不知道爲何複製過去vs裏面說fopen可能不安全,編譯不出來測試不出來。安全
對c語言的面向過程深有了感觸,再加上本身沒有細分模塊與函數致使出錯多、效率低下,感受仍是c++封裝及模塊的劃分比c語言簡單。可是結對確實是提供了思路即便咱們交流代碼不大詳細,每每在qq上交流一些問題和進度及本身的思路,能夠明顯感到1+1>2,ide