WordCount
一、开发者
201631107108
二、代码地址
https://gitee.com/zc177777/WordCount
三、作业地址
https://edu.cnblogs.com/campus/xnsy/Test/homework/2203
四、
刚开始看到这次作业时,我没有一点思绪,后来通过网上搜索,请教同学,明白了WordCount的功能以及功能实现。
1、基本功能
void CharCount(); //字符统计函数
void WordCount(); //单词统计函数
void LineCount(); //行数统计函数
void Muiltiple(); //综合统计函数,包括代码行,空行,注释行
2、实现代码
2.1
void CharCount() //字符统计函数,包括空格等字符
{
FILE *fp,*fpw;
int chars=0;
char ch;
if((fp = fopen(name,"r")) == NULL)//只读方式
{
printf("文件读取失败");
}
ch = fgetc(fp);
while(ch != EOF)//读至文件结束
{
chars ++;
ch = fgetc(fp);
}
printf("字符数 :%d\n",chars);
fpw = fopen("result.txt","w");
fprintf(fpw,"字符数:%d\n",chars);
fclose(fp);
fclose(fpw);
}
2.2
void WordCount() //单词统计函数
{
FILE *fp;
int words=0;
char ch;
if((fp = fopen(name,"r")) == NULL)
{
printf("文件读取失败");
}
ch = fgetc(fp);
while(ch != 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(fp);
}
words ++;
ch = fgetc(fp);
}
else
{
ch = fgetc(fp);
}
}
printf("单词数 :%d\n",words);
fclose(fp);
}
2.3
void LineCount() //行数统计函数
{
FILE *fp;
int lines=1;
char ch;
if((fp = fopen(name,"r")) == NULL)
{
printf("文件读取失败");
}
ch = fgetc(fp);
while(ch != EOF)
{
if (ch == '\n')
{
lines ++;
ch = fgetc(fp);
}
else
{
ch = fgetc(fp);
}
}
printf("行数 :%d\n",lines);
fclose(fp);
}
2.4
void Muiltiple() //综合统计函数,包括代码行,空行,注释行
{
FILE *fp;
char ch;
int c=0,e=0,n=0;
if((fp = fopen(name,"r")) == NULL)
{
printf("文件读取失败");
}
ch = fgetc(fp);
while(ch != EOF)
{
if (ch == '{'||ch == '}')
{
e ++;
ch = fgetc(fp);
}
else if (ch == '\n')
{
ch = fgetc(fp);
while(ch == '\n')
{
e ++;
ch = fgetc(fp);
}
}
else if (ch == '/')
{
ch = fgetc(fp);
if (ch == '/')
while(ch != '\n')
{
ch = fgetc(fp);
}
n ++;
ch = fgetc(fp);
}
else
{
c ++;
while (ch != '{'&&ch != '}'&&ch != '\n'&&ch != '/'&&ch != EOF)
{
ch = fgetc(fp);
}
}
}
printf("代码行数 :%d\n",c);
printf("空行数 :%d\n",e);
printf("注释行数 :%d\n",n);
fclose(fp);
}
2.5
int main()
{
printf("请输入文件名:");
gets(name);
CharCount();
WordCount();
LineCount();
Muiltiple();
}
五、测试截图




六、总结
通过完成此次作业,我学到了很多新的东西,掌握了很多新知识,学了很多之前想学而又没时间学习的知识。其实我对于面向对象编程不是很熟悉,所以我选择使用c语言来完成此次作业,但是我看有好多同学都是使用C#完成的,我觉得自己有必要去再学学面向对象的编程,无论是C#或JAVA还是别的语言。万丈高楼平地起,以后要多多练习编程。
浙公网安备 33010602011771号