《控制台菜单选项的实现》由会员分享,可在线阅读,更多相关《控制台菜单选项的实现(2页珍藏版)》请在金锄头文库上搜索。
1、控制台菜单选项的实现(1)使用ifelse入门 声明:在这一个系列中本着一题多解,步步深入以及尽量降低初学者的阅读难度减少枝叶代码的精神,很多细节都没有处理。例如举的例子中的函数的返回值都是void,函数中间没有安全检查,及其它的一些问题,通过例子中的几十行代码不可能做的面面俱到,在实际编程中是不能这样的,请同学们不要盲目效仿。 要想成为一名优秀的软件工程师,你必须对自己的代码精益求精,哪怕是最简单的问题也需要仔细考虑,在尽量减少Bug出现的可能性的同时还需要提高程序的扩展性。下面就举一个大家认为很简单,也非常熟悉的一个控制台菜单选项程序。第一个版本V0.1使用if else做分支。这个可能是
2、初学者最先想到的方式。程序清单 1用if else作分支处理(V0.1)void CmdRunning() int iCmdNum; do printf(请选择:0. 退出;1. 新建文件;2. 打开文件;3.保存文件n); scanf(%d,& iCmdNum); if (0 = iCmdNum) printf(谢谢使用,再见!n); else if (1 = iCmdNum) CreateFile(); else if (2 = iCmdNum) OpenFile(); else if (3 = iCmdNum) SaveFile(); else printf(对不起,你选择的数字不存在,
3、请重新选择!n); while(iCmdNum!=0); 细心的同学可能会发现,这段程序存在一个很严重的Bug,比如,运行程序后输入字符a(非数字),回车,死循环出现了。为什么会出现这种情况呢?原因是scanf只能将缓冲区中的数字(使用了%d)读入iCmdNum,并清空缓冲区,而我们输入的是非数字,那么scanf读入失败,失败了它也就不会去清空缓冲区,这样造成的结果就是,我们不需要再输入其它字符,scanf每次都会去读缓冲区,每次都失败,每次都不会清空缓冲区,当下次再来读时发现缓冲区中有数据就不会停止等用户输入,接着又进入下一次的循环,死循环就形成了。 祝大家中秋快乐!我的一位朋友给我的短信“祝中秋乐在工作中”,于是发了这篇博文。对于初学者来说,这是一篇非常好的系列训练材料。