c语言清空输入缓冲区的作用,C语言-----怎么刷新输入缓冲区

经常我们想在屏幕上看一个结果或输入内容的时候,却不等待你输入就结束了,此时就需要刷新输入缓冲区。

题目:先来看一个栗子:实现登录时确认密码,输入Y即确认成功,N表示放弃确认。

int main()

{

char password[20] = { 0 };

int ch = 0;

printf("请输入密码:");

scanf("%s", password);

printf("请确认密码(Y/N):");

//fflush(stdin);//第一种方法刷新输入缓冲区

while ((ch = getchar()) != '\n')//第二种方法

{

;

}

ch = getchar();

if ('Y' == ch)

{

printf("确认成功\n");

}

else if ('N' == ch)

{

printf("放弃确认\n");

}

system("pause");

return 0;

}

在scanf输入密码完成之后,scanf拿走从键盘输入到输入缓冲区的123456(假设密码是123456),那么剩下一个\n留在输入缓冲区。这时,你要确认密码输Y/N就不会起作用,因为getchar已经把\n拿走了。

d0186d42d5ad9d46db7190ca204a1a2d.png

那我们要做的是在确认密码之前刷新缓冲区的值,这里有两种方法。

way1:

C语言中刷新输入缓冲区:(清除输入时垃圾)

函数:fflush(stdin)

头文件:#include

功能:清空输入缓冲区,为了不影响后面的数据读取例如在读完一个字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);)。

way2:

还可以这样实现,一直读取缓冲区的值直到最后一个值 \n,这时,就可以确认密码Y/N就会是有效的输入。

while ((ch = getchar()) != '\n')

{

;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值