vscode+Remote-ssh插件
使用vscode远程登录Linux虚拟机开发
xshell
方便将windows主机中的文件传输到虚拟机中,本次实验室将实验代码传输到虚拟机中
Ubuntu虚拟机
配置Remote-ssh

配置公钥登录
具体步骤可以参考此博客
安装windows上的ssh服务
设置->应用与功能->管理可选功能,点击添加ssh即可通过Remote-ssh登录到Linux

测试代码
由于在实际代码的执行过程中会出错,在代码中添加
include "string.h"在终端下使用命令
gcc -o menu linktable.c menu.c运行可执行文件
分别测试help命令和quit命令,发现quit命令报错,结果如下:

结果分析
检查代码后发现,在主函数中,命令行接受命令后会去调用FindCmd函数,根据返回值结果来进行输出:

我们继续检查这个FindCmd函数,看看其内部到底在干些什么事情.检查代码后发现,FindCmd函数内部只是调用了另外一个函数SearchLinkTableNode,它啥也没干:

于是我们进入到SearchLinkTableNode函数内部,看看他的工作有哪些:

这段代码很明显是在遍历一个链表,可以很明显的看到边界代码逻辑中的一个缺陷:并没有遍历链表的最后一个节点.而最后一个节点正好是保存一个退出信息的.在InitMenuData函数中可以看到整个链表的结构以及每个节点保存的内容:
整个链表就这三个节点,分别对应着help命令,version命令以及quit命令:

分析完成!
接下来我们将代码中的逻辑错误部分进行更正:
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode))
{
if(pLinkTable == NULL || Conditon == NULL)
{
return NULL;
}
tLinkTableNode * pNode = pLinkTable->pHead;
while(pNode != NULL)
{
if(Conditon(pNode) == SUCCESS)
{
return pNode;
}
pNode = pNode->pNext;
}
return NULL;
}
重新编译,并执行,结果如下:

大功告成!
原文:https://www.cnblogs.com/sa19225475/p/12520970.html