软件工程实验5
SA17225400
哪来的妖精 + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006
GitHub :https://github.com/littlewulei/Software-Engineering-Lab.git
实验要求(参照视频中的具体实验过程)
本实验在提供的代码基础上进行
- 给lab5-1.tar.gz找bug,quit命令无法运行的bug
- 利用callback函数参数使Linktable的查询接口更加通用
- 注意接口的信息隐藏
实验过程
将老师给的源代码拷贝到lab5文件夹下,编译运行
发现quit命令错误传入的p是NULL,但是根据help命令的结果,quit命令显然是在链表里的。所以错误应该是在findcmd
函数里,定位到findcmd函数
发现findcmd函数返回的是SearchLinkTableNode 的结果,定位到SearchLinkTableNode函数
为什么返回的是NULL呢,原来是while 循环的条件是pNode != pLinkTable->pTail,也就是说循环并没有遍历尾节点,
而quit恰好是链表的尾节点。由此将循环条件修改为 pNode != NULL,程序运行正常
修改callback函数参数,使LinkTable更通用:
修改Searchcondition 参数:
修改SearchLinkTableNode参数:
编译运行出错,错误应该在findcmd函数里,向SearchLinkTableNode传入第三个参数void * args 是个未知参数,但是老师又没有定义
全局变量,而且老师把这一段给掐掉了,所以暂时无法给出正确代码。
上传到github:
实验总结
通过这次实验让我明白了回调函数的作用,我们不需要知道接口具体是怎样实现的,我们只需要传入需要的参数,回调函数会自动处理好,
并把结果返回给我们。这样我们就可以设计出更通用的接口来。