第 5 章:综合项目——命令行通讯录¶
📋 本章概览¶
| 项目 | 内容 |
|---|---|
| 学习时长 | 60 分钟 |
| 核心概念 | 项目拆分、输入边界、文件持久化、内存安全 |
| 核心比喻 | 把前四章的零件组装成一间可工作的服务台 |
| 实践任务 | 完成可保存和查询联系人的命令行程序 |
| 难度等级 | ★★★★☆ |
完成一个命令行通讯录,支持:
- 新增联系人
- 按姓名查询
- 列出全部联系人
- 保存到文本文件
- 启动时加载已有数据
验收标准¶
- 编译命令开启
-Wall -Wextra -pedantic - 输入过长时不会写出数组边界
- 文件打开失败时显示原因并安全退出
- 退出前释放动态内存
- 至少拆成一个头文件和两个源文件
调试建议¶
如果程序出现崩溃,先用 AddressSanitizer 编译:
它可以帮助发现越界访问、释放后使用等问题。工具报告的是线索,仍然需要你理解数据生命周期并修复根因。
✅ 验证步骤¶
- 用编译器警告选项编译,确保没有未处理警告。
- 新增、查询、列出联系人,并重启程序验证持久化。
- 输入超长文本、空文件和不存在的文件,确认程序安全处理。
- 使用 AddressSanitizer 运行完整流程,确认没有内存错误。
📝 本章总结¶
- 可交付项目必须同时考虑功能、边界和失败路径。
- 编译器警告和运行时检测器都是开发反馈回路。
- 模块拆分能降低修改和测试的成本。
✏️ 课后练习¶
- 增加删除联系人和按电话查询功能。
- 为文件解析和联系人查找编写独立测试。
🔮 学完之后¶
建议继续学习调试与测试,把本项目的错误定位和回归验证自动化。