软工作业用C实现WC

 个人项目WC

Github地址:https://github.com/liuliyun29/mygit

wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:

wc.exe [parameter] [file_name]

基本功能列表:

wc.exe -c file.c     //返回文件 file.c 的字符数

wc.exe -w file.c    //返回文件 file.c 的词的数目  

wc.exe -l file.c      //返回文件 file.c 的行数

 

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

60

60

· Estimate

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

600

600

Development

开发

60

60

· Analysis

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

120

180

· Design Spec

· 生成设计文档

30

30

· Design Review

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

30

30

· Coding Standard

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

30

30

· Design

· 具体设计

60

60

· Coding

· 具体编码

40

40

· Code Review

· 代码复审

20

20

· Test

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

30

30

Reporting

报告

40

30

· Test Report

· 测试报告

30

30

· Size Measurement

· 计算工作量

30

30

· Postmortem & Process Improvement Plan

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

30

30

合计

 

1190

1260

 

解题思路与设计过程

1、看到题目的时候,先把《C程序设计》这本书拿了出来,学习了第十章文件的输入输出。学习了用fopen函数、fclose函数打开和关闭数据文件。在实现统计程序的时候,选择了使用fgetc函数一个一个读入字符。我还百度了关于命令行程序的资料,并且学习了C语言中命令行参数argcargv的用法。

2、我只写了一个main函数。

统计字符数:字符输入一个,字符数加1;统计单词数:输入’  ‘或’\n’单词数加1;统计行数:输入’\n’,行数加1

代码说明:

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
int main(int argc, const char * argv[])
{
    FILE *fp;
    char ch;
    int chars=0;
    int words=0;
    int lines=0;
    if((fp=fopen(argv[2],"r"))==NULL)
 {
   printf("无法打开此文件\n");
   exit(0);
  }
 while((ch=fgetc(fp))!=EOF)
{  
   chars++;
   if(ch==' ')
   {
    words++;
   } 
 else if(ch=='\n')
  {
    words++;
    lines++;
   }
 }
    if(strcmp(argv[1],"-c")==0) printf("字符数:%d\n",chars);
        else if(strcmp(argv[1],"-w")==0) printf("单词数:%d\n",words);
        else if(strcmp(argv[1],"-l")==0) printf("行数:%d\n",lines);
    
        return 0;
}

 测试:

空文件:

只有一个字符:

只有一个单词:

只有一行:

一个源文件:

小结:

这次作业我犯了一个很大的错误,就是没有好好审题,还好时间还来的及,所以才能完成这次作业。另外,通过这次作业我学习到了很多新的或者之前学过但是忘记了的知识,能够在错误以后多次推翻重写,做更多的尝试。但是我也认识到了自己知识与技术上的不足,希望以后好好学习。

 

posted on 2018-09-14 22:45  liuliyun  阅读(159)  评论(0编辑  收藏  举报

导航