第二次作业WordCount

码云地址:

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;
}

测试用例

1495001-20180930230952365-651013928.jpg

测试效果

1495001-20180930225650644-1576141545.jpg
1495001-20180930225714804-379346580.jpg

总结

通过本次作业,我学到很多新的东西,包括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

转载于:https://www.cnblogs.com/ruanpeng2625/p/9733625.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值