wc.exe指令(C++)
https://github.com/kielingpao/wc
项目相关要求
wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。
实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。
具体功能要求:
程序处理用户需求的模式为:
wc.exe [parameter] [file_name]
基本功能列表:
wc.exe -c file.txt //返回文件 file.txt 的字符数
wc.exe -w file.txt //返回文件 file.txt 的词的数目
wc.exe -l file.txt //返回文件 file.txt 的行数
解题思路
实现部分:
1.首先统计字符等的功能,只需要用fopen打开读取文件就基本搞定了,剩下就是遍历文件,什么数据都有了,这个函数也能实现绝对路径相对路径。
2.递归文件,只需要调用windows api即可,以前操作过,找找以前的笔记管理系统代码即可。具体就是用api函数返回当前目录记录在一个string对象(记录当前目录)中,之后对目录的操作都可以通过操作这个string对象进行,和用另一个api函数找到文件夹句柄这两个windows api配合,再使用递归的代码写法在该目录下进行递归遍历即可。
3.图形界面,使用easyX库即可。
4.要通过命令行运行,输入指令而不是通过“用户交互”来进行程序,所以程序用使用命令行参数的main函数。
测试部分:
1.需要考虑到各种文件字符、各种输入的情况,保证程序的鲁棒性。
2.要创建空字符文件、只有一个字符、空行、只有一行等的文件来进行测试。
设计实现过程
只要DOS命令行运行了wc.exe命令,就进入一个while(1)死循环里,不断检测判断匹配那几个命令,若匹配不到,就break退出死循环同时退出wc.exe程序,返回dos操作系统。
遇到的困难及解决方法
1.暑假没打代码,编译器莫名其妙消失了,解决办法:重新下载编译器,重新设置环境变量。
2.换了个新的编译器,现在使用cl编译器,环境变量等等设置有点不顺手,解决办法:多打代码。
3.关于递归文件。解决办法:以前做过笔记管理系统递归遍历、删除指定目录下所有文件,思路是调用几个windows API,那份代码当初几乎没有注释,几千行,晕。还是重写好了。这个也正在做,目前还有bug。
4.关于图形界面,以前做过C语言下调用别人的库完成图形界面,IDE莫名其妙都没了,那个库也忘记在哪了,代码也已经不存在了。解决办法:在学C++的图形界面。
5.目前只完成基本功能。解决办法:很认真地完成,也是严格按照基本功能的描述来做。
关键代码or设计说明
所有操作都在dos命令行下操作即可。不用IDE,只用记事本写代码,用命令行编译运行即可。
在命令行使用wc.exe指令完成对当前目录的任意文件进行统计。
可以与dos的命令配合,例如CD、type指令这些通通都可以使用,wc.exe(或wc)已然成为DOS命令行下一个指令。
测试运行

PSP
|
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
|
Planning |
计划 |
一小时 |
一小时 |
|
· Estimate |
· 估计这个任务需要多少时间 |
一周 |
一周 |
|
Development |
开发 |
3h |
3h |
|
· Analysis |
· 需求分析 (包括学习新技术) |
2d |
2d |
|
· Design Spec |
· 生成设计文档 |
3h |
3h |
|
· Design Review |
· 设计复审 (和同事审核设计文档) |
1h |
1h |
|
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
2h |
2h |
|
· Design |
· 具体设计 |
5h |
5h |
|
· Coding |
· 具体编码 |
4h |
4h |
|
· Code Review |
· 代码复审 |
1h |
1h |
|
· Test |
· 测试(自我测试,修改代码,提交修改) |
2h |
2h |
|
Reporting |
报告 |
1h |
1h |
|
· Test Report |
· 测试报告 |
1h |
1h |
|
· Size Measurement |
· 计算工作量 |
20min |
20min |
|
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30min |
30min |
|
合计 |
项目小结
太久没有打代码了,好多好多命令都忘记了,而且换了cl,似乎还有很多东西可以挖掘,刚好趁这个机会复习下,路还长。
wc.exe指令(C++)的更多相关文章
- 模仿WC.exe的功能实现--node.js
Github项目地址:https://github.com/102derLinmenmin/myWc WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要 ...
- JAVA实现WC.exe功能
项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...
- C++实现wc.exe程序
github项目地址:https://github.com/insomniali/wc 基本功能 wc.exe -c file 统计文件file的字符数 [实现] wc.exe -w fil ...
- 个人项目(WC.exe)(java)(基于图形界面)
一.Github项目地址:https://github.com/Leungdc/ENhomework 二.PSP: PSP2.1 Personal Software Process Stages 预估 ...
- WC.exe(Java实现)
一.GitHub项目地址:https://github.com/nullcjm/mypage 二.项目相关要求: wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写 ...
- 个人项目作业(wc.exe)
1.GitHub项目地址 https://github.com/QiuBin666/WC 项目介绍: 题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行 ...
- 个人项目作业——wc.exe
一.Github项目地址 https://github.com/PIPIYing/wc 二.项目概况 项目描述 Word Count 1. 实现一个简单而完整的软件工具(源程序特征统计程序). 2. ...
- WC.exe【C】
gitee传送门!!!(电脑打不开github,多次尝试未果,决定先用gitee存着先) 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...
- 小白のjava实现wc.exe功能
GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file. ...
随机推荐
- Java面试题:如何对HashMap按键值排序
Java中HashMap是一种用于存储“键”和“值”信息对的数据结构.不同于Array.ArrayList和LinkedLists,它不会维持插入元素的顺序. 因此,在键或值的基础上排序HashMap ...
- 找到div下的第一个ul
$("div#div的id ul li a")//选择的是div下 ul下所有li下的所有a标签 $("div#div的id").children(" ...
- zabbix增加手机短信、邮件监控的注意要点,SSL邮件发送python脚本
1.短信接口文档: URL http://xxx.com/interfaces/sendMsg.htm Method POST Description 文字短信调用接口 Request Param L ...
- python开发面向对象基础:组合&继承
一,组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合 人类装备了武器类就是组合 1.圆环,将圆类实例后传给圆环类 #!/usr/bin/env python #_*_ ...
- CORS跨域资源共享漏洞
CORS漏洞其中已经存在很久了,但是国内了解的人不是很多,文章更是少只有少,漏洞平台也没有此分类. 在DefConChina之后写了一篇算是小科普的文章. 定义CORS,Cross-Origin Re ...
- 改变函数中的 this 指向——神奇的call,apply和bind及其应用
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...
- Linux 学习笔记之 --- epoll 事件模型详解
epoll 主要采用对已就绪的 fd 进行轮询操作 一.epoll 触发方式 epoll支持 ET 和 LT 两种触发方式 ET(边缘触发):Nginx 就是采用 ET 触发方式,只支持 no-b ...
- 机器学习工具Octave安装(Win10环境)
介绍 Octave是一个旨在提供与MATLAB语法兼容的开放源代码计算与数值分析的工具:同时也是GNU成员之一.Octave最初的设计以MATLAB为模板,在功能上与MATLAB有许多相似之处.但相较 ...
- Mesh Filter & Mesh Render
[Mesh Filter] The Mesh Filter takes a mesh from your assets and passes it to the Mesh Renderer for r ...
- Linux 下Nginx 运行Vue
首相基础的安装Node.js npm 先建个目录把 /node/www 然后在这个目录下 wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linu ...