一.c项目开发总体分如下图所示
二.对每一步的解析
1.需求文档分析,本例以电子词典作为例子
列出每一个需求以及每一个需求的每一个特点,将其归纳 为一张表。
2.设计数据结构
设计数据结构,也就是确定抽象数据类型,数据存放的方式,先想出多个方案,然后比较各个方案的优劣
1 /* 2 方案1 3 使用三维数组,110000为单词个数,2位每个单词对应2行,100表示每一行可存储的字符数, 4 由于栈空间最大1M,所以这种方式不行,而且很消耗cpu资源 5 word[i][2][100]代表一个单词和解释 6 */ 7 char word[110000][2][100];// 8 /* 9 方案2 10 使用一个结构代表一个单词,key存储单词,trans存储 11 所有单词存储在malloc分配的动态数组中,由于每个单词长度不一样,每个单词的解释也不一样, 12 所以key的长度太小不能满足需求,太大又造成存储空间的浪费 13 */ 14 struct WORD{ 15 char key[100];//单词 16 char trans[100];//单词对应的解释 17 }; 18 /* 19 方案三 20 使用结构体,但是成员为指针,根据单词和解释的实际大小分配内存,内存占用小 21 缺点:解释不够详细,因为一个单词对应多个解释 22 */ 23 struct WORD{ 24 char *key;//单词指针,指向一个malloc分配的内存 25 char *trans;//解释指针 26 }; 27 /* 28 方案四 29 使用结构体 30 */ 31 struct WORD{ 32 char *key;//单词指针,指向一个malloc分配的内存 33 int count_trans;//每个单词对应的解释数量 34 char **trans;//存放解释的字符指针数组 35 };
3.根据需求绘制程序整体运行流程图
4.分析数据类型的存储结构,如下图
5.定义常用变量
1 /*********定义常用全局变量*****************/ 2 /* 3 给结构体类型起一个新名字:WORD 4 */ 5 typedef struct WORD SWORD; 6 /*********结构体指针,指向词库结构体数组******/ 7 SWORD * DICT; 8 /***********文本词库文件名*********************/ 9 char *dicttxtname = "dict.txt"; 10 /***********二进制词库文件名*********************/ 11 char *dictbitname = "dict.dat"; 12 /************词库数量,结构体数组长度***************/ 13 int length;
6.由于时间关系和随笔大小有限,剩下的五步骤见后期随笔
需要程序源码的可以加我微信x241602私聊。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?