第二次作业

这个作业属于哪个课程 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           # 项目说明文档(用法及结果展示)

四、 例程运行与单元测试结果

为了确保统计逻辑的准确性,本项目编写了自动化单元测试代码。运行测试与功能演示如下:

【单元测试通过截图】
*微信图片_20261101175009

【扩展功能(代码行统计)运行截图】
*ad6759b731faddfa331d32b10deb128

五、 开发中遇到的环境与配置困难

“配环境比写代码难”是本次作业最大的体会,期间我解决了几个真实的工程问题:

  1. Git 环境变量失效:一开始在 cmd 中执行 Git 命令提示“不是内部或外部命令”。排查后发现是系统 Path 变量中丢失了 Git 路径。通过手动将 E:\Git\cmd 重新加入系统变量并重启终端,成功解决。
  2. Gitee 2FA 认证问题:由于账号开启了双重认证(2FA),导致本地 git push 时无法使用登录密码。通过查阅文档,我在网页端生成了 “私人令牌(Personal Access Token)” 作为密码替代,成功完成了安全推送。
  3. 路径与文件编码踩坑:项目初期文件夹命名带有空格,导致编译时路径解析异常,重命名为 wc-project 后恢复正常;此外,因测试文件被误保存为二进制乱码格式,导致编译器报错 undefined reference to 'WinMain',通过重建纯文本文件得以解决。

六、 版本控制与 Commit 记录

本项目严格遵循 Git 版本控制规范,完整保留了从基础到扩展的开发足迹:

  • v0.1:空项目初始化,搭建基础目录及 .gitignore。
  • v0.2:完成基础功能(字符、单词、句子统计)。
  • v0.3:完成扩展功能(代码行统计),并完善测试用例与文档。

【Gitee 提交记录截图】
*image

七、 总结与 AI 辅助声明

通过本次作业,我不仅掌握了 C 语言文件流操作与状态机的编写,更深刻理解了 Git 的版本控制逻辑和跨平台开发的环境配置细节。

声明:本次作业在环境配置排错及文档排版上使用了 AI 工具进行辅助,相关提示词记录已随作业一并提交。👉 提示词详情已放仓库中

posted @ 2026-11-01 18:37  前年18  阅读(13)  评论(0)    收藏  举报