第二次作业
作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc |
---|---|
这个作业的目标 | 熟悉博客的写作和使用,将自己介绍给老师和助教 |
姓名-学号 | 李琪亮-2022329301082 |
码云仓库网址 | https://gitee.com/foteino/tcsp/tree/master |
一、作业要求
实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。
具体命令行界面要求举例:
命令模式: wc.exe [参数] [文件名]
wc.exe -c file.txt 统计字符数
wc.exe -w file.txt 统计单词数
完整代码请移步,请复制链接打开。
https://gitee.com/foteino/tcsp/tree/master
扩展功能(加分项):统计代码行、空行、注释行等,并提供相应命令接口。
项目要求必须通过多次提交体现各个版本更迭和运行结果截图,版本号分别为
v0.1 空项目;
v0.2 项目完成基础功能
v0.3 项目完成扩展功能(加分项)
编写对应的单元测试。
使用选用的IDE附带的工具进行performance test。
二、项目介绍
本项目采用C语言进行编程,开发环境中选择了DEVCPP作为集成开发环境(IDE)。作为软件技术基础课程的第二次作业,我们设计并实现了一个命令行文本计数统计程序,主要功能是统计纯英文文本文件中的字符数量、单词数量以及句子数量。此外,程序还扩展了其他统计功能,如代码行数、空行数及注释行数的统计。为了满足作业要求,即生成可执行文件(.exe),项目中应用了C语言的stdlib,stdio,string库,通过它将C语言脚本文件(.c文件)打包成独立的可执行文件(.exe文件)。
基础功能
1.统计纯英文文本中的字符数、单词数和句子数。
2.对测试数据进行测试。
拓展功能
1.统计纯英文文本中的代码行、空行、注释行数。
2.对测试数据进行测试。
三、使用说明
1.通过win+R调出命令行窗口输出cmd,进入终端。
2.进入到代码所在的路径。
3.按照如下指令运行程序。
基础命令
1.wc.exe -c file1.txt 统计字符数。
2.wc.exe -w file2.txt 统计单词数。
3.wc.exe -s file1.txt 统计句子数。
注意 :file1,file2是测试的文件,可以自行更改。
基础命令
-
1.wc.exe -c test1.txt 统计字符数。
-
2.wc.exe -w test2.txt 统计单词数。
-
3.wc.exe -s test1.txt 统计句子数。
注意 :test1,test2是测试的文件,可以自行更改。
拓展功能
1.统计纯英文文本中的代码行、空行、注释行数。
2.对测试数据进行测试。
3.wc.exe -l test3.txt 统计字符数。
4.wc.exe -e test3.txt 统计单词数。
5.wc.exe -m test3.txt 统计句子数。
注意 :test3是测试的文件,可以自行更改。
四、代码运行结果
ver0.2
进行字符,词语,句子的统计。
ver0.3
进行代码行数,注释行数,还要换行字符的统计。
五、项目心得
在这个项目中,我对原有的文本统计程序进行了扩展,增加了对代码行、空行和注释行的统计功能。在这个过程中,我不仅巩固了对 C 语言基本语法的理解,还深入学习了如何处理文件输入和字符串解析。
-
理解需求
首先,我仔细分析了需求,明确需要统计的内容包括字符数、单词数、句子数、代码行数、空行数和注释行数。这让我意识到在设计程序时需要清晰地定义每一个功能模块,以便后续的实现和维护。 -
函数模块化
在实现新功能时,我采用了模块化的设计思路,将每一种统计功能分解成独立的函数。这种做法不仅提高了代码的可读性,还使得每个函数的职责更加明确。例如,countLines、countEmptyLines 和 countCommentLines 函数分别处理不同的统计任务,便于后续的调试和扩展。 -
文件处理与状态管理
在统计注释行的过程中,我遇到了如何正确处理多行注释的挑战。通过引入状态管理变量 inMultiLineComment,我能够有效地跟踪当前行是否在多行注释中。这让我意识到在处理复杂逻辑时,状态管理是非常重要的。 -
编码与调试
在编写和调试代码时,我学会了使用 fseek 函数重置文件指针,以便在同一文件中多次读取不同的信息。此外,我也对字符串查找函数(如 strstr)有了更深入的理解,掌握了如何在字符串中查找特定模式。 -
反思与总结
通过这次修改,我不仅提高了自己的编程能力,也增强了对代码结构和逻辑设计的理解。在实际开发中,面对新的需求,如何高效地修改和扩展现有代码是一个重要的技能。这次经历让我更加自信,也激励我继续学习和探索更多的编程知识。