码迷,mamicode.com
首页 > 其他好文 > 详细

WordCount 统计行数、字符数、单词数

时间:2018-09-24 17:13:48      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:空格   规范   class   else   home   电脑   就是   nbsp   上传文件   

一、代码地址:

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个.\n",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个.\n",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 == ‘\n‘)

{

lineCount++;

ch = fgetc(fp);

}

else

{

ch = fgetc(fp);

}

}

printf("行数为:%d行.\n",lineCount);

fclose(fp);

}

这个函数用于统计文件中的行数,一个个字符依次读取,遇到"\n"就加一,直到读完为止。

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 == ‘\n‘)

{

lineCount++;

ch = fgetc(fp1);

}

else if(ch==‘ ‘)

{

flag=0;

ch = fgetc(fp1);

}

else

{

if(flag==0)

{

wordCount ++;

flag=1;

}

ch = fgetc(fp1);

}

}

printf("字符数为:%d个.\n",charCount);

printf("单词数为:%d个.\n",wordCount);

printf("行数为:%d行.\n",lineCount);

fclose(fp1);

fp2=fopen("result.txt","w");

fprintf(fp2,"字符数为:%d个.\n",charCount);

fprintf(fp2,"单词数为:%d个.\n",wordCount);

fprintf(fp2,"行数为:%d行.\n",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 统计行数、字符数、单词数

标签:空格   规范   class   else   home   电脑   就是   nbsp   上传文件   

原文地址:https://www.cnblogs.com/psps/p/9695450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!