---恢复内容开始---
Github项目地址https://github.com/sumilekaedei/wc.git
解题思路:刚开始拿到题目时,因为是第一次做这种项目,只能对已有的代码进行参考,然后理解其中的内容,加上查阅书本来编写自己的代码。首先是要打开文本对文本中的字符进行处理,然后对字符进行统计。
设计实现过程:首先编写主函数,在主函数中输入、读取文本、递归统计和输出,在递归中对输入错误时出现的情况和文本字符的统计。
代码说明:
1 #include2 #include 3 #include 4 #include 5 int c=0,w=1,l=1; 6 void count(char *name) 7 { 8 FILE *fp=NULL; 9 char a;10 fp=fopen(name,"r");//打开文本11 if(fp==NULL)12 {13 printf("输入错误");14 _getch();15 exit(0);16 }17 while(!feof(fp))//文本字符统计18 {19 a=fgetc(fp);20 if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.'&&a!='!'&&a!=';'&&a!='=')21 {22 c++;23 }24 else if(a==' '||a==','||a=='.'||a=='!'||a=='?'||a==';')25 {26 w++;27 }28 else if(a=='\n'||a=='\t')29 {30 w++;31 l++;32 }33 else if(a=EOF)break;34 }35 fclose(fp);//关闭文本36 }37 int main(int argc, char* argv[])38 {39 FILE *fp;40 count(argv[2]);//递归调用41 if(!strcmp(argv[1],"-c")) //判断输入指令42 printf("字符数:%d\n",c);43 else if(!strcmp(argv[1],"-w"))44 printf("词数:%d\n",w);45 else if(!strcmp(argv[1],"-l"))46 printf("行数:%d\n",l);47 }
测试运行:
PSP表格:
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 180 | 300 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 30 | 30 |
· Design Spec | · 生成设计文档 | 120 | 130 |
· Design Review | · 设计复审 (和同事审核设计文档) | 30 | 60 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
· Design | · 具体设计 | 60 | 45 |
· Coding | · 具体编码 | 180 | 240 |
· Code Review | · 代码复审 | 60 | 100 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 30 | 30 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 50 |
合计 | 820 | 1085 |
项目小结:这个项目的基本功能还是比较简单,主要是一开始不会怎么编写代码来调用文本中的内容,在基本完成的时候修复bug需要的时间比较多。这个项目的不足就是并没有实现扩展功能和高级功能,只实现了基本功能。