需求分析
- 控制台可能会使用到新建文件、打开文件、保存文件、退出…
- 我们这边可以使用一个字符串来显示要使用的函数。
创建相应的数据结构
- typedef 将各个函数抽象。
- 结构创建
优雅的写一个控制台菜单程序
#include <stdio.h>
#include <stdlib.h>
typedef struct CmdEntry{
void (*pfuncmd)();
char cHelp[64];
}CmdEntry;
void CreateFile()
{
printf("新建文件夹\n");
}
void OpenFile()
{
printf("打开文件\n");
}
void SaveFile()
{
printf("保存文件\n");
}
void Exit()
{
printf("退出\n");
exit(0);
}
static CmdEntry cmdArray[10] = {
{&CreateFile, "新建文件夹"},
{&OpenFile, "打开文件"},
{&SaveFile, "保存文件"},
{&Exit, "退出"},
{0, 0}
};
void showHelp()
{
int i ;
for ( i = 0; (i < 10) && cmdArray[i].pfuncmd; i++)
{
printf("%d\t%s\n", i, cmdArray[i].cHelp);
}
}
int main(void)
{
int iCmdNum;
char cTmp1[256];
while (1)
{
showHelp();
printf("请选择\n");
iCmdNum = getchar() - '0';
gets(cTmp1);
if (iCmdNum >= 0 && iCmdNum < 10 && cmdArray[iCmdNum].pfuncmd)
{
cmdArray[iCmdNum].pfuncmd();
}
else
{
printf("对不起,你选的数字不存在,请重新选择\n");
}
}
return 0;
}
仿真结果