1.gitHub地址:https://github.com/loveYuJun/wc.exe.git
2.PSP表格
psp2.1 | Personal Software Process Stages |
预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 |
45 | 50 |
Estimate | 估计这个任务所需时间 | 45 | 50 |
Development | 开发 | 640 | 520 |
Analysis | 需求分析(学习新技术) | 200 | 150 |
Design spec | 生成设计文档 | 10 | 10 |
Design Review | 设计复审 | 30 | 15 |
Coding standard | 代码规范(为目前开发制定合适的规范) | 10 | 10 |
Design | 具体设计 | 30 | 25 |
Coding | 具体编码 | 100 | 120 |
Code Review | 代码复审 | 60 | 40 |
Test | 测试(自我测试,修改代码,提交修改) | 200 | 150 |
Reporting | 报告 | 100 | 90 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 20 | 30 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程修改计划 | 60 | 30 |
合计 | 785 | 600 |
3.解题思路
使用C语言进行读取文件,主要利用C语言中的函数fgetc(),以进行对文档中的字符,词,行的计算。
4.设计实现过程
利用函数fgetc()读取到文件末尾时,会返回一个EOF,以此作为循环结束的条件,可以直接得到字符数;在此循环条件下对读取到的字符进行判定,当字符不为空白符或标点符号时,判定这是一个词的开始,当再次遇到空白或标点符号时,判定一个词的结束;在循环条件下,计算换行符出现的次数,结果加1即为行数。
5.主要代码
//主函数加全局变量 FILE *fp; char flag; int main(){ char filename[50]; printf("please input filename!\n"); gets(filename); countchar(filename); countword(filename); countline(filename); } //计算字符数 int countchar(char *filename){ int chars=0; fp=fopen(filename,"r"); flag=fgetc(fp); for( ; flag!=EOF ; ){ chars++; flag=fgetc(fp); } printf("The char count of the file is %d.\n",chars); fclose(fp); return 0; } //j计算词数 int countword(char *filename){ int words=0; fp=fopen(filename,"r"); flag=fgetc(fp); int inword=false; for( ; flag!=EOF ;){ if(!isspace(flag)&&!ispunct(flag)&&!inword){ words++; inword=true; } if(inword&&isspace(flag)||ispunct(flag)) inword=false; flag=fgetc(fp); } printf("The word count of the file is %d.\n",words); fclose(fp); return 0; } //计算行数 int countline(char *filename){ int lines=0; fp=fopen(filename,"r"); flag=fgetc(fp); for( ;flag!=EOF ;){ if(flag=='\n') lines++; flag=fgetc(fp); } lines++; printf("The line count of the file is %d.\n",lines); fclose(fp); return 0; }
6.测试运行
(1)空白文档
(2)单行文档
(3)多行文档
7.项目小结
通过这次的作业,我认识到C语言还有不了解的,同时,在这个过程中,我更加了解了fgetc()函数的使用,了解了一个软件开发的较为具体的过程。
来源:https://www.cnblogs.com/frx2000/p/12563663.html