1、github链接:https://github.com/asligia/hzxxiaoxiu/blob/master/wc.cpp
2、预计开发时间&实际开发时间
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
10 |
20 |
· Estimate |
· 估计这个任务需要多少时间 |
20 |
20 |
Development |
开发 |
120 |
150 |
· Analysis |
· 需求分析 (包括学习新技术) |
20 |
30 |
· Design Spec |
· 生成设计文档 |
10 |
10 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
10 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
10 |
10 |
· Design |
· 具体设计 |
30 |
30 |
· Coding |
· 具体编码 |
30 |
25 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
30 |
30 |
Reporting |
报告 |
20 |
20 |
· Test Report |
· 测试报告 |
20 |
20 |
· Size Measurement |
· 计算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 |
10 |
合计 |
|
360 |
|
3、解题思路:
看到题目后,在百度搜索了一下读取文件相关的操作,然后对各个读取进行判断条件的确定。
4、实现过程:
主要分为主函数,功能函数CharCount、WordCount、LineCount,以及打印界面的函数Home组成,主函数用于打开关闭文件,和输入命令,功能函数用于实现三种功能。
5、代码说明:
主函数:
int main() { FILE *file=NULL; char order=0; do { if((file= fopen("1.txt","r"))==0) { printf("can't find the file\n"); exit(0); } Home(); scanf("%c",&order); switch(order-'a') { case 2: { CharCount(file); break; } case 11: { LineCount(file); break; } case 22: { WordCount(file); break; } case 16: { printf("thinks to use!\n"); printf("press to continue\n"); getchar(); getchar(); break; } default: { printf("order error!"); printf("press to continue\n"); getchar(); getchar(); break; } } fclose(file); }while(order!='q'); return 0; }
各功能函数:
void CharCount(FILE *f1) //查询字符数 { char ch; int charCounts=0; while((ch=fgetc(f1))!=EOF) charCounts++; printf("CharCount is %d \n",charCounts); printf("press to continue\n"); getchar(); getchar(); }
void LineCount(FILE *f2) //查询行数 { char ch; int lineCounts=1; //防止最后一行没有回车 while((ch=fgetc(f2))!=EOF) { if(ch=='\n') lineCounts++; } printf("LineCount is %d \n",lineCounts); printf("press to continue\n"); getchar(); getchar(); }
void WordCount(FILE*f3) //查询词数 { char ch; int wordCounts=0; while((ch=fgetc(f3))!=EOF) { if (ch >= 'a'&&ch <= 'z' || ch >= 'A'&&ch <= 'Z' || ch >= '0'&&ch <= '9') { while (ch >= 'a'&&ch <= 'z' || ch >= 'A'&&ch <= 'Z' || ch >= '0'&&ch <= '9' || ch == '_') { ch = fgetc(f3); } wordCounts++; ch = fgetc(f3); } } printf("WordCount is %d \n",wordCounts); printf("press to continue\n"); getchar(); getchar(); }
6、测试运行
测试文件:
测试结果:
7、小结:
整体来说,完成过程比想象中慢很多,主要原因是对代码不熟悉。
而且由于时间比较赶,并没有完成附加功能
来源:https://www.cnblogs.com/hzx4717/p/12501533.html