zoukankan      html  css  js  c++  java
  • wc

    一、Github地址:https://github.com/The-fifteen-bofu/bofu

    二、解题思路

          看到题目一脸懵,感觉自己什么都不会,先从文件操作函数学起,先实现基本功能。再探索控制台如何应用

    决定先判断单词,字符,空行都是用什么来判定,如何读取文件的一个字符。通过fget来

    三、设计实现过程

    对文件进行操作

    利用读取函数依次判别再返回值

    四、代码说明

    复制代码
    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    #include<stdlib.h>

    void Cc(char File[])  //字符数计算
     {
             int count=0;            
             char mychar=' ';
             FILE *f=fopen(File,"r");
             if(f==NULL){
                     printf("文件不存在\n");
                     return ;
             }
             while((mychar=fgetc
    (f))!=EOF)
             {
                     if(isspace(mychar)==0)
                     count++;
             }
             fclose(f);
             printf("该文件的字符数为%d\n",count);
     }
     
     void Cw(char File[]){
       FILE *pf=NULL;
        int wcount=0;
        pf=fopen(File,"r");
        if(pf==NULL){
            printf("寻找文件失败\n");
            exit(-1);
        }
          char mychar;
        mychar = fgetc(pf);
        while(mychar!=EOF){
            if(mychar>='a'&&mychar<='z'||mychar>='A'&&mychar<='Z'||mychar>='0'&&mychar<='9'){
                while(mychar>='a'&&mychar<='z'||mychar>='A'&&mychar<='Z'||mychar>='0'&&mychar<='9'||mychar=='_'){
                    mychar=fgetc(pf);
                }
                wcount++;
                mychar=fgetc(pf);
            }
            mychar=fgetc(pf);
        }
            fclose(pf);
            printf("文件的单词数为%d\n",wcount);
    }
    void Cl(char File[]) //查询文件行数
    {
      FILE *fp;
      int row = 0, count = 0;
      char buffer[150];
      if((fp = fopen(File, "r")) == NULL)
       {printf("查询文件不存在\n");
        return ;
      }
      while(fgets(buffer,150,fp)!=NULL)
      {
          count++;
      }
      row = count;
      printf("文件的行数为%d\n", row);
      fclose(fp);
      return ;
    }
     
    int main(int argc, char *argv[])//主函数
    {
        if(argc<2)
        {
            printf("请输入参数");
            return 0;
        }//用户无参数输入
     
        else if(strcmp(argv[1],"-c")==0)
       {
        Cc(argv[2]);
      }
         else if(strcmp(argv[1],"-w")==0)
       {
        Cw(argv[2]);
      }
         else if(strcmp(argv[1],"-l")==0)
       {
        Cl(argv[2]);
      }
      else{printf("参数输入有误");
      }
        return 0;    
        }

    五、测试运行

     

     1.txt为空白文件

     

     

     

     六、PSP表格

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

     10

    1 5

    · Estimate

    · 估计这个任务需要多少时间

     10

     15

    Development

    开发

     375

    485

    · Analysis

    · 需求分析 (包括学习新技术)

     310

    360

    · Design Spec

    · 生成设计文档

    · Design Review

    · 设计复审 (和同事审核设计文档)

    · Coding Standard

    · 代码规范 (为目前的开发制定合适的规范)

    · Design

    · 具体设计

     10

     10

    · Coding

    · 具体编码

     30

     90

    · Code Review

    · 代码复审

     5

     5

    · Test

    · 测试(自我测试,修改代码,提交修改)

     20

     120

    Reporting

    报告

     30

     30

    · Test Report

    · 测试报告

     20

     20

    · Size Measurement

    · 计算工作量

    · Postmortem & Process Improvement Plan

    · 事后总结, 并提出过程改进计划

     10

     10

    合计

    七、项目小结

           总结就是对计算机语言掌握的实在是太差了,自己实在是太差了。面对题目无从下手,面对很多的问题无法解决,一点点查一点点看博客。学到的东西真的有很多也知道了控制台如何传入参数,参数函数以及文件操作函数,以后要好好加油。

          单元测试真的把我整崩溃了我弄了好多个小时,最开始先去弄懂命令行函数也去问同学,参数如何传导,搞了好久参数传不过去要么很麻烦,很不容易的把参数路径都传过去了发现测试结果不对,代码错了,真的快崩溃了,改了数个小时。

     代码也很弱,极其简单没有用到类和接口也只是很普通的基础功能,我真的要好好提升一下我的代码能力。

  • 相关阅读:
    在已经安装的nginx上,增加ssl模块
    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))
    ab和jmeter进行GET/POST压力测试的使用心得和比较
    linux历史命令查找快捷方式
    HDFS的dfs.replication不同验证
    Set replication in Hadoop
    RVM 安装 Ruby
    Fluentd初探 简介与安装
    Flunetd 用于统一日志记录层的开源数据收集器
    Custom partition assignment and migration kafka集群扩充迁移指定partition
  • 原文地址:https://www.cnblogs.com/bofujiang/p/12508345.html
Copyright © 2011-2022 走看看