实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

网易云ID:Nerd2dian0

GitHub源码: https://github.com/Nerd2dian0/Youcan/tree/master/lab5(下面的是修改的主要代码,想看全部代码请看gayhub,谢谢!报告质量不在贴图多少)

实验要求:

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

具体过程:

任务一,寻找bug:

从云盘下载好源代码,上传给GitHub,演示后quit命令出现问题:

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

分析原因,源码在linktable.c中SearchLinkTableNode中存在语句while(pNode != pLinkTable->pTail),而quit是尾节点,从而出错。

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

修改后的代码为:

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

演示结果:实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

任务二、三,利用callback使接口更通用以及接口信息的隐藏:

 menu.c 和 LinkTable.c体现callback如下:

menu.c:

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

linktable.c

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

具体过程是:在主函数中调用了FindCmd函数从而调用linktable.c中的searchlinktable,searchlinktable  回调(callback)menu.c中的searchcondition函数,进行匹配,如果命令匹配返回命令对应值。

接口信息的隐藏:将linktable.h的结构体转移给linktable.c中实现了信息的隐藏。

遇到的问题,将信息隐藏时,需要在linktable.h中对结构体定义。

实验总结:初步认识了callback的调用和信息隐藏,使得接口更安全更方便使用。