嵌入式 关于scanf("%c",&ch)实现拦截时候出现直接跳过的问题
来源:互联网 发布:centos修改ftp目录 编辑:程序博客网 时间:2024/05/17 07:28
过去上论坛,还有最近写程序,老是有人遇到这样的问题:就是有时候scanf("%c",&ch)本应该阻塞等待用户输入一个char型数据的,但为什么会跳过呢?
纠其根源,我们先来了解一下scanf()是怎么接受数据的。
首先,当我们的pc指向scanf这句时,系统并不是等待用户输入,而是判断输入缓冲区有没有符合格式的内容,如果有,则直接读取。
知道了这个,我就应该明白,scanf("%c",&ch);不是没有读到数据,而是读到了我们不知道的数据。
那问题又来了,它读到了什么??
好吧,这就要说到行缓存;
我们用scanf()的时候都要按下enter键,那enter键按了之后去哪儿了??
好吧,问题基本应该知道了,enter键也进入了输入缓存区,也就是scanf("%c",&ch);
读到了'\n';
解决办法,很简单,既然缓存区有东西,那我们就清空它呗~~
setbuf(stdin,NULL);(这个windows和linux下都可以)
fflush(stdin);(这个只能windows);
- 嵌入式 关于scanf("%c",&ch)实现拦截时候出现直接跳过的问题
- 关于scanf("%c",&ch)直接跳过的问题
- scanf("%c",&ch)直接跳过的问题
- 关于scanf("%c",&ch)直接跳过的问题 - zy799894671的专栏 - 博客频道 - CSDN.NET
- 关于scanf被跳过的问题
- 关于使用Scanner的时候,用nextLine()时出现的跳过问题。
- 关于程序中跳过scanf()或者gets()的问题
- 关于vs2013做c语言scanf出现警告的问题
- scanf("%c", &ch) & 回车
- 关于scanf遇到的一点小麻烦,执行到scanf时貌似没做而直接跳过了
- 关于fgets从键盘读取,直接跳过键盘输入的问题
- scanf("%c",&ch);不接受输入
- 由scanf("%d",&ch);引出的输入缓冲区问题
- 一点对C语言中跳过scanf语句的理解
- 关于scanf的问题
- C语言-循环中套用scanf()出现的问题
- C/C++经典问题:[未输入字符,输入语句被直接跳过] 的多种解决方案
- [C++]实现--讨论关于实现中可能出现的问题
- 嵌入式 线性表(顺序表,链表)示例
- 嵌入式 一个简单的个人通讯录(基于二叉排序树,带注释)
- 嵌入式 用链表实现直接选择排序和直接插入排序示例
- 嵌入式 C语言中.h和.c文件解析经典收藏
- 嵌入式 实现自己的printf函数小示例
- 嵌入式 关于scanf("%c",&ch)实现拦截时候出现直接跳过的问题
- 嵌入式 二叉树实现通讯录管理系统
- 嵌入式 一句语言实现查找某个结点是否在二叉树里
- 嵌入式 c语言exit和return在程序中表现的区别
- 嵌入式 VI常用命令整理
- Oracle定时任务-DBMS_SCHEDULER
- test index
- SpringMVC+AJAX
- jQuery获取表单域的值