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还是别的语言。万丈高楼平地起,以后要多多练习编程。

 

posted on 2018-10-21 18:56  177777  阅读(305)  评论(0)    收藏  举报

导航