wordcount基本功能

Posted zjx123456

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wordcount基本功能相关的知识,希望对你有一定的参考价值。

代码地址:https://gitee.com/Z_jx/codes/3c57peszqo6lh1xkudvbi84

基本功能列表:(已完成)

jjj.exe -c 2.c     //返回文件 2.c 的字符数
jjj.exe -w 2.c    //返回文件 2.c 的词的数目  
jjj.exe -l 2.c      //返回文件 2.c 的行数
jjj.exe -o -o //手动按照顺序输入字符数,词,行数。

    

扩展功能:(未完成)
    -s   递归处理目录下符合条件的文件。
    -a   返回更复杂的数据(代码行 / 空行 / 注释行)

高级功能:(未完成)

   -x 参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。

 

PSP2.1表格

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 1h

 1h

· Estimate

· 估计这个任务需要多少时间

 1h

 1h

Development

开发

 2h

 3h

· Analysis

· 需求分析 (包括学习新技术)

 1h

 2h

· Design Spec

· 生成设计文档

 1h

 2h

· Design Review

· 设计复审 (和同事审核设计文档)

 1h

 2h

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 1h

 2h

· Design

· 具体设计

 1h

 2h

· Coding

· 具体编码

 4h

 6h

· Code Review

· 代码复审

 1h

 2h

· Test

· 测试(自我测试,修改代码,提交修改)

 2h

 2h

Reporting

报告

 1h

 1h

· Test Report

· 测试报告

 1h

 1h

· Size Measurement

· 计算工作量

 18h

 27h

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 3h

 3h

 

合计

 21h

 

 30h

 

解题思路:

    刚开始听到老师说这个的时候,我一头雾水,什么是wordcount,然后在网上看了他们对这个的理解,我才知道什么是wordcount,才对他有了大体的思路。

参考地址:https://www.cnblogs.com/m870100/p/9648510.html

代码:

//读取文件
int num,w,num1;
if(argc==3)
{
FILE *fp = fopen(argv[2],"r");
if(!fp)
{
printf("文件打开失败!!! ");
return -1;
}
//对文件内容字符数进行判断
if( !strcmp(argv[1],"-c"))
{
//字符数
char temp;
num = 0;
temp = fgetc(fp);
while(temp!=EOF)
{
temp = fgetc(fp);
num++;
}
printf("该文本文件的字符数为:%d ",num);
fprintf(fp,"%d",num);
}

//对文件内容单词数进行读取
 if(!strcmp(argv[1],"-w"))
{
//单词数
w=0;
char a=fgetc(fp);
while(a!=EOF)
{
if((a>=‘a‘ && a <=‘z‘) || ( a >=‘A‘ && a <=‘Z‘) || ( a >=‘0‘ && a <=‘9‘))
{
while((a>=‘a‘ && a <=‘z‘) || ( a >=‘A‘ && a <=‘Z‘) || ( a >=‘0‘ && a <=‘9‘))
a =fgetc(fp);
w++;
a =fgetc(fp);

}
else
a =fgetc(fp);
}
printf("该文本文件的单词数为:%d ",w);
fprintf(fp,"%d",w);

}

//对文件内容行数进行提取
if( !strcmp(argv[1],"-l") )
{
//行数
char temp;
num1 = 1;
temp = fgetc(fp);
while(temp != EOF )
{
//putchar(temp);
if(temp == ‘ ‘)
{
//字符需要用单引号扩住
num1++;
}
temp = fgetc(fp);
}
printf("该文本文件的行数为:%d ",num1);
fprintf(fp,"%d",num1);
}

 

//文件输入到指定文件。
if(!strcmp(argv[1],"-o"))
{
if(argc==3)
{

//以只写方式打开文件。
FILE *fp1= fopen(argv[1],"w");
if(!fp)
{
printf("文件打开失败!!! ");
return -1;
}

//根据提示,依次输入到指定文件。
printf("字符数,单词数,行数: ");
scanf("%d %d %d",&num,&w,&num1);
fprintf(fp1,"该文本文件的字符数为:%d ",num);
fprintf(fp1,"该文本文件的单词数为:%d ",w);
fprintf(fp1,"该文本文件的行数为:%d ",num1);
fclose(fp1);
}

}

 

//参数过大
else{
printf("error:参数超出范围!! ");
printf("允许参数:-c,-w,-l,-o ");
}
int n=fclose(fp);
}


//对参数数目进行判断。
else{
printf("error:运行参数必须要3个!! ");
printf("use:jjj.exe [parameter] [file_name] ");
}

//暂停运行。

system("pause");

测试结果:

技术分享图片

 技术分享图片

技术分享图片

技术分享图片

文件.

技术分享图片

单元测试用例:

技术分享图片

技术分享图片

 

 

 

技术分享图片

 

测试结果

技术分享图片

 技术分享图片

技术分享图片

技术分享图片

 

 

 技术分享图片

 文件:

技术分享图片

 总结:

          我觉得这个项目对我来说i是一个挑战以前从未接触过的,但是同时我也觉得他十分有趣,因为我是用C语言写的,所以相当于我又对C语言进行了一个复习,我因为自己不是很会,所以我参照老师的步骤来做的,先写了一个PSP表格,对自己的这个项目进行了大致的评估,但是我却错误的估算了代码对我的难度,所以我的时间大大超出了我的预算,我下次一定会注意这个情况的。






































































































以上是关于wordcount基本功能的主要内容,如果未能解决你的问题,请参考以下文章

WordCount-系统分析与设计

WordCount代码实现及测试

WordCount基本功能

个人项目wordcount

软件工程:java实现wordcount基本功能

个人项目 - wordCount(Java实现)