Github项目地址:https://github.com/RicyGray/wc.exe
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 10 | 5 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 5 |
Development | 开发 | 20 | 5 |
· Analysis | · 需求分析 (包括学习新技术) | 50 | 50 |
· Design Spec | · 生成设计文档 | 1 | 0 |
· Design Review | · 设计复审 (和同事审核设计文档) | 5 | 5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 20 | 15 |
· Design | · 具体设计 | 20 | 30 |
· Coding | · 具体编码 | 30 | 50 |
· Code Review | · 代码复审 | 5 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting | 报告 | 5 | 10 |
· Test Report | · 测试报告 | 5 | 10 |
· Size Measurement | · 计算工作量 | 5 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 5 | 10 |
合计 | 211 | 225 |
在刚拿到题目的时候我觉得wc.exe要读取文件要运用到文件打开函数,读取函数等。
在代码设计的过程中我设计了两个函数,进行数据统计的函数及主函数。在主函数中读取文件,文件通过传参给到统计函数中。
int cnum=0; int wnum=0; int lnum=0; //全局变量统计字符数、单词数、行数 void count(char *file) { FILE * fp; char a; if((fp=fopen(file,"r"))==NULL)//fopen函数打开文件 { printf("read file failed!\n"); exit(-1); } while(!feof(fp))//进行统计 { a=fgetc(fp); if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.') ++cnum; if(a==' '||a=='\n'||a==','||a=='.'||a=='!'||a=='='||a==';') ++wnum; if(a=='\n') ++lnum; } ++lnum; --wnum; fclose(fp); } int main(int argc, char* argv[]) { FILE *fp; void count(char *file); count(argv[2]); char a=*argv[1]; if((fp=fopen(argv[2],"r"))==NULL) { printf("FileNull\n"); } switch(a)//功能选择 { case'w':printf("File:%s WordNum:%d\n",argv[2],wnum);break; case'c': printf("File:%s CharNum:%d\n",argv[2],cnum);break; case'l': printf("File:%s LineNum:%d\n",argv[2],lnum);break; default: printf("NullPoint\n"); } return 0; }
用指针数据存放程序地址、功能选择项和文件名。文件名传参到统计函数进行统计。功能选择用switch实现。
通过此次学习,我有了更多的代码尝试,设计和认知上学到了许多。
所有评论(0)