#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
main
{
char password[20]={0};
int ret=0;
scanf("%s",password);//输入密码,并存放在password中
printf("请确认(Y/N):");//缓冲区还剩一个'\n'
ret = getchar();//Y/N
if(ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
}

C语言.缓存区与清理缓存区_缓存

代码中有scanf和getchar()两个输入函数,第二个输入的是一个’\n',也就是回车键,直接拿到ret中,判断为“放弃确认”。其实有个输入缓存区。而又如何清除它呢?

C语言.缓存区与清理缓存区_简单之缓存区清理缓存区_02

C语言.缓存区与清理缓存区_缓存_03

加个getchar(),把留有的‘\n’拿走即可。若输入密码为123456 abcd,就需要拿走多个字符,这是我们用一个循环语句把它清楚即可。如下:

while((ch=getchar()) != '\n')
{
;
}