WordCount 统计行数字符数单词数
Posted psps
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WordCount 统计行数字符数单词数相关的知识,希望对你有一定的参考价值。
https://github.com/13882163221/wc.git
二、PSP表格
PSP阶段 | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|
计划 | 100 | 160 |
估计这个任务需要多少时间 | 100 | 140 |
开发 | 100 | 120 |
需求分析 | 30 | 30 |
生成设计文档 | 20 | 20 |
设计复审 | 30 | 30 |
代码规范 | 20 | 20 |
具体设计 | 30 | 30 |
具体编码 | 40 | 40 |
代码复审 | 30 | 30 |
测试 | 10 | 20 |
报告 | 20 | 20 |
测试报告 | 20 | 20 |
计算工作量 | 10 | 20 |
事后总结 | 20 | 20 |
合计 | 580 | 720 |
三、解题思路
1.首先分析用什么语言写
本题是统计文件里的行数,单词数,字符数的数量。对我而言,与其它语言相比,我比较熟悉C语言,面对这种小程序,我觉得用C语言写更简单一点。
2.分析需要用到几个函数
我们要统计行数,单词数,字符数,所以要用三个函数来分别统计这三者。另外,还可以用一个函数来统计这三者,程序运行时,可以直接显示这三者。当然还有一个函数就是main函数。
3.分别编写函数内容
每个函数里的内容其实还是很容易的,我会在后面进行代码展示及解释
四、程序设计实现过程
CharCount()函数:用于统计字符数
WordCount()函数:用于统计单词数
LineCount()函数:用于统计行数
Passage()函数:用于统计字符数、单词数、行数
五、代码说明
1.CharCount()函数
//统计字符数
void CharCount()
{
FILE *fp;
int charCount = 0;
char ch;//读取文件返回的字节
if((fp = fopen("test.txt","r")) == NULL)
{
printf("文件打开失败.");
}
ch = fgetc(fp);
while(ch != EOF)
{
charCount++;
ch = fgetc(fp);
}
printf("字符数为:%d个. ",charCount);
fclose(fp);
}
这个函数用于统计文件中的字符数,一个个字符依次读取,直到读完为止。
2.WordCount()函数
//统计单词数
void WordCount()
{
FILE *fp;
int wordCount = 0,flag=0;
char ch;//读取文件返回的字节
if((fp = fopen("test.txt","r")) == NULL)
{
printf("文件打开失败.");
}
ch = fgetc(fp);
while(ch != EOF)
{
if (ch==‘ ‘)
{
flag=0;
ch = fgetc(fp);
}
else
{
if(flag==0)
{
wordCount ++;
flag=1;
}
ch = fgetc(fp);
}
}
printf("单词数为:%d个. ",wordCount);
fclose(fp);
}
这个函数用于统计文件中的单词数,一个个字符依次读取,遇到空格就加一,直到读完为止。
3.LineCount()函数
//统计行数
void LineCount()
{
FILE *fp;
int lineCount = 0;
char ch;//读取文件返回的字节
if((fp = fopen("test.txt","r")) == NULL)
{
printf("文件打开失败.");
}
ch = fgetc(fp);
while(ch != EOF)
{
if (ch == ‘ ‘)
{
lineCount++;
ch = fgetc(fp);
}
else
{
ch = fgetc(fp);
}
}
printf("行数为:%d行. ",lineCount);
fclose(fp);
}
这个函数用于统计文件中的行数,一个个字符依次读取,遇到" "就加一,直到读完为止。
5.Passage()函数
void Passage()
{
FILE *fp1;
FILE *fp2;
int lineCount=0,wordCount=0,charCount=0;
int flag=0;
char ch;//读取文件返回的字节
if((fp1 = fopen("test.txt","r")) == NULL)
{
printf("文件打开失败.");
}
ch = fgetc(fp1);
while(ch != EOF)
{
charCount++;
if (ch == ‘ ‘)
{
lineCount++;
ch = fgetc(fp1);
}
else if(ch==‘ ‘)
{
flag=0;
ch = fgetc(fp1);
}
else
{
if(flag==0)
{
wordCount ++;
flag=1;
}
ch = fgetc(fp1);
}
}
printf("字符数为:%d个. ",charCount);
printf("单词数为:%d个. ",wordCount);
printf("行数为:%d行. ",lineCount);
fclose(fp1);
fp2=fopen("result.txt","w");
fprintf(fp2,"字符数为:%d个. ",charCount);
fprintf(fp2,"单词数为:%d个. ",wordCount);
fprintf(fp2,"行数为:%d行. ",lineCount);
fclose(fp2);
}
这个函数用于统计文件中的行数,单词数,字符数,将读取的结果放在新的文件夹result.txt中。
5.main() 函数
int main(int argc,char *argv[])
{
//统计单词数
if ((strcmp(argv[1], "-w") == 0) && (strcmp(argv[2], "test.txt") == 0))
{
WordCount();
}
//统计字符数
if ((strcmp(argv[1], "-c") == 0) && (strcmp(argv[2], "test.txt") == 0))
{
CharCount();
}
//统计行数
if ((strcmp(argv[1], "-l") == 0) && (strcmp(argv[2], "test.txt") == 0))
{
LineCount();
}
//统计字符数,单词数,行数
if ((strcmp(argv[1], "-p") == 0) && (strcmp(argv[2], "test.txt") == 0))
{
Passage();
}
return 0;
}
测试的时候通过输入"-w,-c,-l,-p"来实现自己想要的功能
六、测试设计过程
1.将代码工程放在电脑的D盘
2.用cmd命令进入Debug
3.Debug文件夹内部内容
test.txt是用于统计的文件,result.txt是用于接收程序返回结果的文件
4.字符数统计测试
5.单词数统计测试
6.行数统计测试
7.三者统计测试
8.result.txt文件夹返回的内容
七、参考文献链接
PSP表格的应用,参考了邹欣老师的博客:http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
博客的排版,参考了范飞龙老师的这篇博客:
http://www.cnblogs.com/math/p/se-tools-001.html
有关Git的使用,参考了廖雪峰的官方网站
有关linux上传文件到github,参考了:
https://www.2cto.com/kf/201806/755193.html
以上是关于WordCount 统计行数字符数单词数的主要内容,如果未能解决你的问题,请参考以下文章