当前位置:网站首页>用getchar清理缓冲区(强烈推荐,C语言易错典型)
用getchar清理缓冲区(强烈推荐,C语言易错典型)
2022-07-23 05:39:00 【rookieﻬ°】
如何清理缓冲区??
什么是缓冲区?
缓冲区又称为缓存,是内存中的一部分,是内存中预留的储存空间,用来缓冲输入或输出的数据。根据其对应的输出设备还是输出设备,分为输入缓冲区和输出缓冲区。
为什么要清理缓冲区?
我们在磁盘中读取信息时,会先把读出的数据放入缓冲区,计算机再从缓冲区读取数据,当缓冲区中的数据被读取完毕时,计算机又会根据需求重复进行上部分操作,直到用户读取结束。但是,当我们不需要缓冲区的内容而想跳过它,直接读取下一部分内容时,我们能直接读取吗?显然是不可以的!这时候就要我们清理缓冲区了;
如何清理缓冲区?
例:判断是否能正常运行?
#include<stido.h>
int main()
{
char password[10] = {
0};
printf("请输入密码:\n");
scanf("%s",password);//数组名就是地址,这一点要记住哦
printf("请确认密码(Y/N):");
int ch = gerchar();//getchar的返回类型为int型,如果设为char类型,有可能数据丢失
if(ch == 'Y')
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
答案是:不能。
为什么呢?[^1]
[1^]:图取自小仙颖的emojil。
因为当你在scanf输入密码的之后,你的回车也被放到了缓冲区,但是scanf读取了回车之前的内容,却把回车符号留在了缓冲区,这就造成当你getchar()的时候,缓冲区是有东西的,因而getchar()直接读取了这个回车符。
解决方法:
步骤:
getchar();
这样可以清理缓冲区的一个字符,比如上一题;
那如果我想清理很多缓冲区的垃圾呢?这个时候就要用到循环了。
while(getchar()!='\0');
这个循环就非常简短精妙,你仔细分析,会发现,最后回车符也被清理了!
我想,朋友,你也不想别人白嫖你的文章吧【手动滑稽】。
边栏推荐
猜你喜欢

Spark常见面试问题整理

Install pyGame using CMD

Dictionary creation and copying

PyGame realizes the airplane war game

Large factory interview machine learning algorithm (0): Feature Engineering | data preprocessing

Flask蓝图
![[Anaconda environmental management and package management]](/img/cc/9f15282eabf0eee5e9f28b4f62f1e2.png)
[Anaconda environmental management and package management]

安装企业版pycharm以及anaconda

防止神经网络过拟合的五种方法

【Pyradiomics】提取的影像组学特征值不正常(很多0和1)
随机推荐
js中拼接字符串,注意传参,若为字符串,则需要加转义字符
从零开始的pytorch小白使用指北
机器学习零散笔记:一些概念和注意
【uiautomation】键指令大全(以及三种调用方式)+常用鼠标动作+SendKeys+Inspect学习
A usage exploration of entitymanagerfactory and entitymanager
[Anaconda environmental management and package management]
Large factory interview machine learning algorithm (0): Feature Engineering | data preprocessing
Matrix vector derivation in machine learning
Install pyGame using CMD
Keras保存训练过程中的最好模型
General view, serializer
Usage of countdownlatch
Leetcode daily question (1946. largest number after varying substring)
人脸识别神经网络实现
【无标题】
【文献调研】在Pubmed上搜索特定影响因子期刊上的论文
初识Flask
With only 5000 lines of code, AI renders 100 million landscape paintings on v853
pygame实现飞机大战游戏
Hyperlink de underlined code