zoukankan      html  css  js  c++  java
  • WC.exe(C++)

    Github项目地址:https://github.com/z472/code_all/blob/master/test1.cpp

    PSP2.1

    Personal Software Process Stages

    预估耗时(分钟)

    实际耗时(分钟)

    Planning

    计划

     30

     0

    · Estimate

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

     四天

     五天

    Development

    开发

    · Analysis

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

     360

     780

    · Design Spec

    · 生成设计文档

     0

     0

    · Design Review

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

     0

     0

    · Coding Standard

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

     30

     0

    · Design

    · 具体设计

     60

     120

    · Coding

    · 具体编码

     480

    720

    · Code Review

    · 代码复审

     240

     360

    · Test

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

     360

     360

    Reporting

    报告

     60

     未知

    · Test Report

    · 测试报告

     0

     0

    · Size Measurement

    · 计算工作量

     0

     0

    · Postmortem & Process Improvement Plan

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

     60

     120

    合计

     1620

     2460

    解题思路:最初觉得命令行就用C的那个命令行参数来做,然后查了很多的windos下C目录操作,因为不会-s的all内容(最难搞懂的是---在知道当前目录时怎么获取它目录下的文件路径的问题),主要是查找对目录操作的内容,看了别人的具体写法,模仿着写的。

    设计实现:边写边分析怎么调用使得代码整洁,觉得函数不多,就没画调用关系图。具体的就是在主函数里写了-s的模式,其他的都是给其他函数传个文件名就可以,但是-s要获取当前的路径所有符合条件的文件,就特例化编写了。

    代码说明:-s:思路就是利用C目录操作,在给到的目录,进入它的子目录,就通过在路径字符串之后加' \\* ' 。然后通过_findfirst()返回子目录的唯一的文件句柄,并存到一个结构体地址data中,文件结构体data中的attrib属性可以区别,文件是文件夹(目录)还是其他普通文件。进行不同处理。普通文件就可以通过C++中的string类,对字符串进行处理很好做。对目录就要递归,也是用string类的函数处理很好做。

      -a: 就是具体情况,具体分析。设想很多可能情况。.c文件是有它自己特点的。比如说注释写法,还有双引号符号什么的都是成对存在的,不是随意的文本文件。写的思路就是一个外循环来利用fgetc(fp)函数遍历文件的字符。外循环的关键量是linec_sum来记录“一行”(一行是不出现意外的情况)的可见字符数,如果在大循环中遍历到了特殊的字符比如注释的‘ / ’就分类处理,其中就加入了内循环来遍历字符判断是否换行(因为/* */ 的关系),或是注释何时截指,截指后对注释行数量的增加,而且又要不处理注释中的内容,就略过遍历它们。后来看题目中有即使代码行又是注释行的情况,就添加对发现注释之前的linec_sum>1的条件,对代码行加一。还有双引号(c中常用的字符串等用到)问题。就双引号如果像是printf("/*");情况,就不能当成是注释行,就先发现一个双引号然后写内循环,使得双引号内的字符内容封闭起来,也是略过遍历方法。-a时间不够了,空白行是外循环的linec_sum<=1且遍历到‘ \n ’时

    ,增加一行。但是无法处理最后一行仅有' } '的情况。

    测试运行:-s的最大问题就是测试运行,因为我发现C目录操作函数就获取当前目录函数getcwd() ,在编译器内执行的窗口和在DOS执行的结果完全不一样,我是看着编译器走的前半程,后来才发现,耽误了好多时间。

    -a的测试不多,但是就在代码说明的几个细节都测试了,问题还没改过来(空白行也是文件结尾那个)

    项目小结:psp使用不熟练,其中字眼看不懂,没有很多步骤,下次需要重视去做好。

  • 相关阅读:
    LeetCode 023 Merge k Sorted Lists
    LeetCode 022 Generate Parentheses
    LeetCode 020 Valid Parentheses
    LeetCode 019 Remove Nth Node From End of List
    LeetCode 018 4Sum
    LeetCode 017 Letter Combinations of a Phone Number
    Linux常用命令详解(3)
    Linux常用命令详解(2)
    Linux常用命令详解(1)
    部署cobbler服务器
  • 原文地址:https://www.cnblogs.com/s1mplelectronic/p/12563617.html
Copyright © 2011-2022 走看看