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:

实验总结

通过这次实验让我明白了回调函数的作用,我们不需要知道接口具体是怎样实现的,我们只需要传入需要的参数,回调函数会自动处理好,

并把结果返回给我们。这样我们就可以设计出更通用的接口来。

 

版权声明:本文为raincute原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/raincute/p/7715838.html