首页 > 其他 > 详细

第二次作业WordCount

时间:2018-09-30 23:59:37      阅读:353      评论:0      收藏:0      [点我收藏+]

码云地址:

WordCount作业思路

使用c语言编写四个函数分别实现四个初级功能,通过一行一行的方式将flie.c文件内容读出,从而统计字符、单词和代码行数

程序设计实现过程

代码说明

1.输出函数

/*将统计结果输出到指定文件*/
int output(char*xFilename,char*filename,char*str,int number)
{
    FILE*xp=fopen(xFilename,"w+");
    fprintf(xp,"%s %s:%d\n",filename,str,number);
    fclose(xp);
    return 0;
}
/*复制文件*/
int outputToResult(char*opFilename,char*xFilename)
{
    FILE*xp=fopen(xFilename,"r");
    FILE*op=fopen(opFilename,"a");
    char ch;
    while((ch=fgetc(xp))!=EOF)
    {
        fputc(ch,op);
    }
    fclose(op);
    fclose(xp);
    return 0;
}

2.统计字符

int countC(char*filename)
{
    FILE*fp=fopen(filename,"r");
    char buffer[100];
    int i=0;
    char c=0;
    int bufferLen;
    int charNum=0;
    while(fgets(buffer,100,fp)!=NULL)
    {
        bufferLen=strlen(buffer);
        for(i=0;i<bufferLen;i++)
        {
            c=buffer[i];
            if(c!=‘ ‘&&c!=‘\t‘&&c!=‘\n‘&&c!=‘\r‘)
            {
                charNum++;
            }
        }
    }
    fclose(fp);
    return charNum;
}

3.统计单词

int countW(char*filename)
{
    FILE*fp=fopen(filename,"r");
    char buffer[100];
    int i=0;
    char c=0;
    int isLastBlank=0;
    int bufferLen;
    int wordNum=0;
    while(fgets(buffer,100,fp)!=NULL)
    {
        bufferLen=strlen(buffer);
        for(i=0;i<bufferLen;i++)
        {
            c=buffer[i];
            if(c!=‘ ‘&&c!=‘,‘&&c!=‘\t‘&&c!=‘\n‘
      )
            {
                !isLastBlank&&wordNum++;
                isLastBlank=1;
            }
            else if(c!=‘\n‘&&c!=‘\r‘)
            {
                isLastBlank=0;
            }
        }
        !isLastBlank&&wordNum++;
        isLastBlank=1;
    }
    fclose(fp);
    return wordNum;
}

4.统计代码行

int countL(char*filename)
{
    FILE*fp=fopen(filename,"r");
    char buffer[100];
    int lineNum=0;
    while(fgets(buffer,100,fp)!=NULL)
    {
        lineNum++;
    }
    fclose(fp);
    return lineNum;
}

测试用例
技术分享图片

测试效果
技术分享图片
技术分享图片

总结
通过本次作业,我学到很多新的东西,包括git的使用和命令行参数的使用。同时也暴露出自己的很多问题,尤其是不熟悉命令操作,在使用git时,多一个两个空格就可能导致出错。
参考文献
https://git-scm.com/book/zh/v1/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8%A1%8C-Git-%E5%89%8D%E7%9A%84%E9%85%8D%E7%BD%AE
https://www.cnblogs.com/saolv/p/7793379.html
https://wenku.baidu.com/view/30d9ddc4b7360b4c2f3f6402.html

第二次作业WordCount

原文:https://www.cnblogs.com/ruanpeng2625/p/9733625.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!