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