控制台选项的实现(3)——用switch简化逻辑(更新2)
0赞
发表于 10/8/2010 10:49:44 PM
阅读(3146)
声明:在这一个系列中本着一题多解,步步深入以及尽量降低初学者的阅读难度减少枝叶代码的精神,很多细节都没有处理。例如举的例子中的函数的返回值都是void,函数中间没有安全检查,及其它的一些问题,通过例子中的几十行代码不可能做的面面俱到,在实际编程中是不能这样的,请同学们不要盲目效仿。
与此同时,由于使用if else处理多分支选项显得更加繁琐且效率低下,它必须一个一个分支的判断,而处理多分支比较容易想到的就是switch 语句了。为了避免出现V0.1中的死循环,我们后面的例子将使用另外一个输入函数,代码详见程序清单3。
程序清单 3 用switch语句做分支处理(V0.3)
1 void CmdRunning()
2 {
3 int iCmdNum = 0;1
4
5 do{
6 printf("请选择:0. 退出;1. 新建文件;2. 打开文件;3. 保存文件\n");
7 iCmdNum = getchar(); // 获得一个字符
8 fflush(stdin); // 清空缓冲区
9 switch(iCmdNum) {
10 case '0':
11 printf("谢谢使用,再见!\n");
12 break;
13 case '1':
14 CreateFile();
15 break;
16 case '2':
17 OpenFile();
18 break;
19 case '3':
20 SaveFile();
21 break;
22 default:
23 printf("对不起,你选择的数字不存在,请重新选择!\n");
24 }
25 }while('0' != iCmdNum);
26 }
对于初学者来说,如果能够独立地写出这个版本,则说明已经达到了本科毕业的基本要求。现行教科书上的许多例子,几乎都是以这种形式出现的,而采用这种思路设计的代码,其扩展性却很差。
下文预告:
现行很多教学参考书上的例子,几乎都是以这种形式出现的,其扩展性很差。通过之前介绍的范例可以看出,“打印的帮助信息”同样也不能做到动态绑定,同时还需要用手工添加case语句及处理函数,这是开发过程中最容易被忽略的问题。
