一、Github地址:https://github.com/The-fifteen-bofu/bofu
二、解题思路
看到题目一脸懵,感觉自己什么都不会,先从文件操作函数学起,先实现基本功能。再探索控制台如何应用
决定先判断单词,字符,空行都是用什么来判定,如何读取文件的一个字符。通过fget来
三、设计实现过程
对文件进行操作
利用读取函数依次判别再返回值
四、代码说明
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
void Cc(char File[]) //字符数计算
{
int count=0;
char mychar=' ';
FILE *f=fopen(File,"r");
if(f==NULL){
printf("文件不存在\n");
return ;
}
while((mychar=fgetc
{
if(isspace(mychar)==0)
count++;
}
fclose(f);
printf("该文件的字符数为%d\n",count);
}
void Cw(char File[]){
FILE *pf=NULL;
int wcount=0;
pf=fopen(File,"r");
if(pf==NULL){
printf("寻找文件失败\n");
exit(-1);
}
char mychar;
mychar = fgetc(pf);
while(mychar!=EOF){
if(mychar>='a'&&mychar<='z'||mychar>='A'&&mychar<='Z'||mychar>='0'&&mychar<='9'){
while(mychar>='a'&&mychar<='z'||mychar>='A'&&mychar<='Z'||mychar>='0'&&mychar<='9'||mychar=='_'){
mychar=fgetc(pf);
}
wcount++;
mychar=fgetc(pf);
}
mychar=fgetc(pf);
}
fclose(pf);
printf("文件的单词数为%d\n",wcount);
}
void Cl(char File[]) //查询文件行数
{
FILE *fp;
int row = 0, count = 0;
char buffer[150];
if((fp = fopen(File, "r")) == NULL)
{printf("查询文件不存在\n");
return ;
}
while(fgets(buffer,150,fp)!=NULL)
{
count++;
}
row = count;
printf("文件的行数为%d\n", row);
fclose(fp);
return ;
}
int main(int argc, char *argv[])//主函数
{
if(argc<2)
{
printf("请输入参数");
return 0;
}//用户无参数输入
else if(strcmp(argv[1],"-c")==0)
{
Cc(argv[2]);
}
else if(strcmp(argv[1],"-w")==0)
{
Cw(argv[2]);
}
else if(strcmp(argv[1],"-l")==0)
{
Cl(argv[2]);
}
else{printf("参数输入有误");
}
return 0;
}
五、测试运行
1.txt为空白文件
六、PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
10 |
1 5 |
· Estimate |
· 估计这个任务需要多少时间 |
10 |
15 |
Development |
开发 |
375 |
485 |
· Analysis |
· 需求分析 (包括学习新技术) |
310 |
360 |
· Design Spec |
· 生成设计文档 |
||
· Design Review |
· 设计复审 (和同事审核设计文档) |
||
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
||
· Design |
· 具体设计 |
10 |
10 |
· Coding |
· 具体编码 |
30 |
90 |
· Code Review |
· 代码复审 |
5 |
5 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
20 |
120 |
Reporting |
报告 |
30 |
30 |
· Test Report |
· 测试报告 |
20 |
20 |
· Size Measurement |
· 计算工作量 |
||
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
10 |
10 |
合计 |
七、项目小结
总结就是对计算机语言掌握的实在是太差了,自己实在是太差了。面对题目无从下手,面对很多的问题无法解决,一点点查一点点看博客。学到的东西真的有很多也知道了控制台如何传入参数,参数函数以及文件操作函数,以后要好好加油。
单元测试真的把我整崩溃了我弄了好多个小时,最开始先去弄懂命令行函数也去问同学,参数如何传导,搞了好久参数传不过去要么很麻烦,很不容易的把参数路径都传过去了发现测试结果不对,代码错了,真的快崩溃了,改了数个小时。
代码也很弱,极其简单没有用到类和接口也只是很普通的基础功能,我真的要好好提升一下我的代码能力。