作为程序员,在Linux环境下,我们用得比较多的命令交互工具是Shell:
在Windows环境下,则是cmd:
下面,我们编写一个简易的shell程序吧。
如果只实现命令交互,这个shell程序其实挺好实现的,算法可以用文字描述为:
void Shell程序(){ 读取用户的输入; if (用户输入的是命令1) { 调用命令1的处理程序; } else if (用户输入的是命令2) { 调用命令2的处理程序; } ... else if (用户输入的是命令n) { 调用命令n的处理程序; }}
但是采用上面的算法,有个缺点:当我们新增命令时,上面的代码也会随之增加。
为了解决这个缺点,我们可以定义一个映射结构:
struct TCommandMap{ char* 命令名称; Func 命令的处理函数;};
然后建立一个映射结构的数组:
struct TCommandMap CommandMaps[] =[ {"命令1", 函数1}, {"命令2", 函数2}, ... {"命令n", 函数n}]
这样,当我们新增命令时,只在映射数组中增加一条记录就可以了。
这是简易Shell程序的包含的头文件:
这是简易Shell程序的命令处理函数:
这是简易Shell程序的数据结构定义:
这是简易Shell程序的main()函数实现:
这是简易Shell程序的编译命令:
这是简易Shell程序的运行情况:
是不是有点像shell或者cmd?
不过说实在话,这个程序哪里是简易版,简直是寒碜版。
谢谢您的浏览!
#科技新星创作营#