第二次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/26rjjc |
|---|---|
| 这个作业的目标 | 实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。 |
| 姓名-学号 | 顾浩-2024329301047 |
基于C语言的命令行文本计数统计程序(wc.exe)开发实录
一、 项目简介
本项目使用 C 语言开发了一款类似 Linux 下 wc 命令的文本统计工具。程序不仅可以统计纯英文 txt 文本的字符数、单词数和句子数,还扩展支持了 C 语言源代码文件的总行数、空行、注释行及有效代码行的统计。
👉 Gitee 仓库地址:https://gitee.com/dragon111q/wc-project (请确认这里换成你的实际链接)
二、 核心统计算法说明
- 字符数 (
-c):统计文件中的所有字符,包含空格、制表符和换行符。 - 单词数 (
-w):以空白字符为分隔符,通过状态机逻辑处理,连续出现的多个空白字符仅算作一个分隔,避免多算。 - 句子数 (
-s):以.、!、?结尾视为一句。针对?!等连续标点做了特殊处理,确保只计为一句。 - 代码行统计 (
-a):- 空行:去除首尾空白后为空的行。
- 注释行:包含
//或处于/* */块注释中的行。 - 代码行:包含非空白、非注释内容的行(若一行既有代码又有注释,计为代码行)。
三、 项目目录结构
项目严格按照规范的工程结构进行组织,各文件功能说明如下:
wc-project/
├── src/
│ ├── main.c # 命令行入口、参数解析与打印输出
│ ├── counter.c # 核心统计函数实现(含状态机与块注释处理逻辑)
│ └── counter.h # 函数声明与数据结构定义
├── testdata/
│ ├── basic.txt # 基础功能测试文本
│ └── code_sample.c # 扩展功能(代码行)测试样例
├── tests/
│ └── test_counter.c # 单元测试代码
├── .gitignore # 忽略编译生成的 .exe 等临时文件
└── README.md # 项目说明文档(用法及结果展示)
四、 例程运行与单元测试结果
为了确保统计逻辑的准确性,本项目编写了自动化单元测试代码。运行测试与功能演示如下:
【单元测试通过截图】
*
【扩展功能(代码行统计)运行截图】
*
五、 开发中遇到的环境与配置困难
“配环境比写代码难”是本次作业最大的体会,期间我解决了几个真实的工程问题:
- Git 环境变量失效:一开始在
cmd中执行 Git 命令提示“不是内部或外部命令”。排查后发现是系统Path变量中丢失了 Git 路径。通过手动将E:\Git\cmd重新加入系统变量并重启终端,成功解决。 - Gitee 2FA 认证问题:由于账号开启了双重认证(2FA),导致本地
git push时无法使用登录密码。通过查阅文档,我在网页端生成了 “私人令牌(Personal Access Token)” 作为密码替代,成功完成了安全推送。 - 路径与文件编码踩坑:项目初期文件夹命名带有空格,导致编译时路径解析异常,重命名为
wc-project后恢复正常;此外,因测试文件被误保存为二进制乱码格式,导致编译器报错undefined reference to 'WinMain',通过重建纯文本文件得以解决。
六、 版本控制与 Commit 记录
本项目严格遵循 Git 版本控制规范,完整保留了从基础到扩展的开发足迹:
- v0.1:空项目初始化,搭建基础目录及
.gitignore。 - v0.2:完成基础功能(字符、单词、句子统计)。
- v0.3:完成扩展功能(代码行统计),并完善测试用例与文档。
【Gitee 提交记录截图】
*
七、 总结与 AI 辅助声明
通过本次作业,我不仅掌握了 C 语言文件流操作与状态机的编写,更深刻理解了 Git 的版本控制逻辑和跨平台开发的环境配置细节。
声明:本次作业在环境配置排错及文档排版上使用了 AI 工具进行辅助,相关提示词记录已随作业一并提交。👉 提示词详情已放仓库中

浙公网安备 33010602011771号