欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C语言清空缓存区

时间:2023-04-29

C语言的读取是通过缓冲区的形式,即键盘-->缓冲区-->读取。故存在清理缓冲区以达到目的的问题 。

int main(){char password[20] = { 0 };printf("请输入密码:");scanf("%s",password);//scanf和getchar从缓冲区拿数据,缓冲区的数据由键盘引入,输入(1234)后的回车'n'会留在缓冲区printf("请确认密码(y/n):");//所以ch = getchar会读取‘n’导致直接显示确认失败//此时需要处理缓冲区,加上一行语句“getchar();”后即可。相当于读取遗留的‘n’但不做操作,后续再由键盘输入y字符来确认//这个方法如果遇到输入中存在空格(123 abc)的话,scanf只能读取空格前的字符,会在缓冲区留下( abc)所以还是会出错//故采取while循环进行清理多个字符char tem;while(tem = getchar()!='n')//输入不是‘n’时,进行读取操作,以消耗缓冲区多余的数据{;}int ch = getchar(); if (ch == 'y')printf("确认成功n");elseprintf("确认失败n");return 0;}

第一种方法是通过getchar(); 语句来读取并消耗掉缓冲区字符,但是只能消耗一个

第二种方法是使用while循环清理多个缓冲区字符 

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。