简单交互式页面的思考(C)
在写二分树结构时,做了一个简单的交互式页面
其中涉及到一个小问题我觉得很值得思考
其他的case很简单,基本上都是读取之后scanf一个数字
主要关注case4,因为进入case4之后还要进行选择打印的方式,上面的代码是我已经改进能够运行的情况。
第一次写的时候,我没有在中间加上getchar() 导致程序进入case4时,就一直循环,唯一能够解释的就是流的问题
在第一次输入选项时,我键盘上键入的是 4+enter
因此进入stdin(标准输入)的信息也是4+enter,但ch读取了整数4
所以stdin里面还有一个 \n 而case4里面刚好读取的是char.(如果是scanf读取整数,会自动跳过整数前的空白符,而char不会跳过)
所以问题就是getchar将\n读入,因此程序一直循环。
另外一种处理方式:读取字符串
利用scanf("%s",temp),但此时不能用 temp=="i" or "r"
显然左边是指针而右边是字面量,如果要比较得用string里面的函数。
最后我选择的处理方式,直接用getchar() 将stdin里面的\n读取出来,再处理
还可以使用刷新流的方式 fflush(stdin) 或者rewind(stdin),不过不同的编译器可能效果不同。
版权声明: 本文为 InfoQ 作者【Alex】的原创文章。
原文链接:【http://xie.infoq.cn/article/0bcb4a91e2f8ee74fc0b371e4】。未经作者许可,禁止转载。
评论