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

合计

七、项目小结

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

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

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

原文地址:https://www.cnblogs.com/bofujiang/p/12508345.html