个人项目:WC

Github项目地址:https://github.com/RicyGray/wc.exe

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

10

5

· Estimate

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

10

5

Development

开发

20

5

· Analysis

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

50

50

· Design Spec

· 生成设计文档

1

0

· Design Review

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

5

5

· Coding Standard

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

20

15

· Design

· 具体设计

20

30

· Coding

· 具体编码

30

50

· Code Review

· 代码复审

5

10

· Test

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

20

20

Reporting

报告

5

10

· Test Report

· 测试报告

5

10

· Size Measurement

· 计算工作量

5

10

· Postmortem & Process Improvement Plan

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

5

10

合计

 

211

225

在刚拿到题目的时候我觉得wc.exe要读取文件要运用到文件打开函数,读取函数等。

在代码设计的过程中我设计了两个函数,进行数据统计的函数及主函数。在主函数中读取文件,文件通过传参给到统计函数中。

int cnum=0;
int wnum=0;
int lnum=0; //全局变量统计字符数、单词数、行数
void count(char *file)
{
    FILE * fp;
    char a;
    if((fp=fopen(file,"r"))==NULL)//fopen函数打开文件
    {
        printf("read file failed!\n");
        exit(-1);
    }
    while(!feof(fp))//进行统计
    {
        a=fgetc(fp);
        if(a!=' '&&a!='\n'&&a!='\t'&&a!=','&&a!='.')
            ++cnum;
        if(a==' '||a=='\n'||a==','||a=='.'||a=='!'||a=='='||a==';')
            ++wnum;
        if(a=='\n')
            ++lnum;
    }
    ++lnum;
    --wnum;         
    fclose(fp);
}
 
int main(int argc, char* argv[])             
{
    FILE *fp;
    void count(char *file);
    count(argv[2]);
    char a=*argv[1];
        if((fp=fopen(argv[2],"r"))==NULL)
        {  
            printf("FileNull\n");
        }
        switch(a)//功能选择
        {
        case'w':printf("File:%s WordNum:%d\n",argv[2],wnum);break; 
        case'c': printf("File:%s CharNum:%d\n",argv[2],cnum);break;
        case'l': printf("File:%s LineNum:%d\n",argv[2],lnum);break;
        default: printf("NullPoint\n");
       }   
    return 0;
     
}

用指针数据存放程序地址、功能选择项和文件名。文件名传参到统计函数进行统计。功能选择用switch实现。

 通过此次学习,我有了更多的代码尝试,设计和认知上学到了许多。

posted @ 2018-09-15 11:30  甄卓岸  阅读(104)  评论(0编辑  收藏  举报