栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言输入缓冲区以及清空输入缓冲区

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言输入缓冲区以及清空输入缓冲区

今天写malloc开辟失败时,return 0 时,考虑到输入缓冲区中剩余的东西,会影响其他操作(例如压栈)qaq,记录一下内。

1.键盘输入缓冲区

像程序输入时,输入的东西会被存放在存储在内存的输入缓冲区中(也可以叫做输入流)。

例如

# include 
int main(void)
{
    int a, b, c;
    scanf("%d", &a);
    printf("a = %dn", a);
    scanf("%d", &b);
    printf("b = %dn", b);
    scanf("%d", &c);
    printf("c = %dn", c);
    return 0;
}

无论你输入1 2 3还是

1

2

3

都不影响结果。

输入缓冲区像队列qaq(我还感觉它的寿命<=main)qaq

2.fflush(stdin)

头文件在stdio.h中,清空输入缓冲区的所有东西(不就清空队列吗qaq).

大佬的话:

        fflush 一般用于清除用户前面遗留的垃圾数据,提高代码的健壮性。因为如果是自己编程的话,一般都会按要求输入。但对于用户而言,难免会有一些误操作,多输入了一些其他没有用的字符,如果程序中不对此进行处理的话可能会导致程序瘫痪。所以编程时一定要考虑到各种情况,提高代码的健壮性和容错性。使用 fflush 就可以将用户输入的垃圾数据全部清除。(果然被我想到了qaq)

例如:

#include
int main(){
	int num;
	char flag;
	while(1){
		scanf("%d",&num);
		printf("num = %dn",num);
		printf("你还想要吗ntr,Y or Nn");
		fflush(stdin);
		scanf("%c",&flag);
		if(flag == 'Y'){
			printf("果然很想要嘛qaqn");
		}else if(flag == 'N'){
			break;
		}else{
			printf("捣乱是吧!!!!,奖励你一次OVon");
		}
	}
	return 0;
}

或许为啥不用getchar()捏

比如我这里第一次输入时写了5adfsadsfads

getchar()不彳亍吧(但是也可以后面在说qaq)

3.用while(getchar() != 'n')

因为不管输入多少无用数据,最后只有一下回车,(回车不是回车符,是换行符n)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928601.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号