C语言输入缓冲区以及清空输入缓冲区
今天写malloc开辟失败时,return 0 时,考虑到输入缓冲区中剩余的东西,会影响其他操作(例如压栈)qaq,记录一下内。
1.键盘输入缓冲区
像程序输入时,输入的东西会被存放在存储在内存的输入缓冲区中(也可以叫做输入流)。
例如
# include <stdio.h>
int main(void)
{int a, b, c;scanf("%d", &a);printf("a = %d\n", a);scanf("%d", &b);printf("b = %d\n", b);scanf("%d", &c);printf("c = %d\n", c);return 0;
}
无论你输入1 2 3还是
1
2
3
都不影响结果。
输入缓冲区像队列qaq(我还感觉它的寿命<=main)qaq
2.fflush(stdin)
头文件在stdio.h中,清空输入缓冲区的所有东西(不就清空队列吗qaq).
大佬的话:
fflush 一般用于清除用户前面遗留的垃圾数据,提高代码的健壮性。因为如果是自己编程的话,一般都会按要求输入。但对于用户而言,难免会有一些误操作,多输入了一些其他没有用的字符,如果程序中不对此进行处理的话可能会导致程序瘫痪。所以编程时一定要考虑到各种情况,提高代码的健壮性和容错性。使用 fflush 就可以将用户输入的垃圾数据全部清除。(果然被我想到了qaq)
例如:
#include<stdio.h>
int main(){int num;char flag;while(1){scanf("%d",&num);printf("num = %d\n",num);printf("你还想要吗ntr,Y or N\n");fflush(stdin);scanf("%c",&flag);if(flag == 'Y'){printf("果然很想要嘛qaq\n");}else if(flag == 'N'){break;}else{printf("捣乱是吧!!!!,奖励你一次OVo\n");}}return 0;
}
或许为啥不用getchar()捏
比如我这里第一次输入时写了5adfsadsfads
getchar()不彳亍吧(但是也可以后面在说qaq)
3.用while(getchar() != '\n')
因为不管输入多少无用数据,最后只有一下回车,(回车不是回车符,是换行符\n)
C语言输入缓冲区以及清空输入缓冲区相关推荐
- C语言清空输入缓冲区的N种方法对比
C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...
- C语言清空输入缓冲区的N种方法对比(转)
C语言中有几个基本输入函数: //获取字符系列int fgetc(FILE *stream);int getc(FILE *stream);int getchar(void);//获取行系列char ...
- c语言清空输入缓冲区函数,c语言:C语言清空输入缓冲区在标准输入(stdin)情况 -电脑资料...
C语言清空输入缓冲区在标准输入(stdin)情况下的使用 程序1: //功能:先输入一个数字,再输入一个字符,输出hello bit#include int main(){int num = 0;ch ...
- c语言清空文件内容_C 语言清空输入缓冲区的几个手段
先观察如下代码和运行情况: 按照控制台提示,输入 value 的值之后,本该能够按照提示继续输入 choice 的值.但是你会发现程序直接跳过了 choice 的输入.而且 choice 原本的值是 ...
- C语言清空输入缓冲区
C语言编程 - 清空键盘输入缓冲区 清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);等,但是在linux这些都不起作用,还得我今天试了半天都没成功,上网搜了一下 ...
- c++清空输入缓冲区_干货 | C++的输入输出方法
C和C++并没有将输入与输出实现在语言中,而是在类库中实现.作为C的超集,C++继承了C的输入输出方法.同时将输入与输出视为字流.流充当了程序和流源流目标之间的桥梁.本文将介绍C++的输入输出方式,并 ...
- 清空输入缓冲区fflush()
转自:http://blog.csdn.net/21aspnet/article/details/174326 scanf( )函数可以接收输入的换行符,'\n',(asci为10),利用函数fflu ...
- C语言编程 - 清空键盘缓冲区
转载自这里 清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);等,但是在linux这些都不起作用,还得我今天试了半天都没成功,上网搜了一下发现setbuf(std ...
- c语言怎么清空标准输入缓冲区,C语言中如何清空输入输出缓冲区
C语言中如何清空输入输出缓冲区 答案:5 信息版本:手机版 解决时间 2019-10-06 09:40 已解决 2019-10-05 13:54 C语言中如何清空输入输出缓冲区 最佳答案 2019- ...
最新文章
- Java Day 13
- mac系统在云服务器地址,mac如何登陆云服务器地址
- SLAM Cartographer(17)分支定界闭环检测
- mysql每天销售汇总_MySQL - 所有项目的每个总销售额
- dm8148 videoM3 link源代码解析
- c++ std 方法 取两个数的较大_【数据结构C++】两数交换(4种方法)
- centos服务器之间copy文件夹命令,Centos下如何拷贝整个目录命令?Centos下拷贝目录命令的方法...
- 学科分类与代码_考研常识 | 2021硕士研究生学科门类、一级学科、二级学科、专业目录及代码查询...
- 本科毕业论文引用、编写英文参考文献格式的方法
- Horizon client 连接桌面后显示:USB已禁用/USB重定向功能已禁用
- html文件转为其他格式文件格式,HTML文件转Word文件格式
- HashMap底层原理详解
- 一起学爬虫(Python) — 02
- Dubbo的failsafe容错策略
- 抖音终于活成了自己讨厌的样子
- 冒泡排序由浅入深详细分析图解
- Kindle 通过邮箱发送电子书
- 关于 z-Stack MT层的使用
- 一缕黑暗中的火光-----------用例图--------------优雅的建模语
- 懒人HTML5笔记-1