pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

C語言中關于scanf讀取緩存區的問題

scanf()函數是通用終端格式化輸入函數,它從標準輸入設備(鍵盤)讀取輸入的信息,接下來通過本文給大家介紹C語言中關于scanf讀取緩存區的問題,需要的朋友一起看看吧

前言

在牛客做了很多坑爹的題,明明代碼沒問題但是就退無法AC,看了很多題解之后,發現是scanf讀取緩存區,在輸入輸出時出現了問題 于是寫個博客總結一下

首先我們要了解什么是 scanf 函數

根據 cplusplus.com的解釋

請添加圖片描述

scanf函數的定義

scanf()函數是通用 終端格式化輸入 函數,它從標準輸入設備(鍵盤)
讀取輸入的信息。可以讀入任何固有類型的數據并自動把數值變換成適當的機內格式。 其調用格式為:
scanf("<格式化字符串>",<地址表>);

功能:執行格式化輸入

并且注意:scanf()函數返回成功賦值的數據項數,出錯時則返回EOF。

當進一步深挖之后(暫時不需要知道原理,只需要知道結果即可),
可以得到這樣一個認識:
鍵盤輸入的東西并沒有直接給scanf讀取 而是在緩沖區進行暫時存放
比如這樣一段代碼:


#include <stdio.h>
int main()
{
int a, b, c, d, e;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d %d %d %d\n", a, b, c, d);
scanf("%d", &e);
printf("%d\n", e);
return 0;
}

預期:1 2 3 4

​ 1 2 3 4

​ 5

​ 5

但是如果你這樣輸入: 1 2 3 4 5

會輸出 1 2 3 4

​ 5

這是因為scanf以回車鍵為信號,去緩沖區進行讀取數據,只要數據的格式符合標準,那么就可以正確讀取,否則就要等待繼續輸入/讀取失敗

總結

通過查閱網站我們知道了,scanf函數是標準輸入流(從鍵盤接收數據),接收的數據放入輸入緩沖區中,其中就包括在鍵盤輸入的空格、回車這類字符,

但是!!!

當你用%d接收時是不會影響的,但是用%c就會產生錯誤,這是因為在"%c"輸入時,空格和轉義字符均被視為有效字符會被%c接收。從而導致輸出錯誤,無法AC

解決方法

1.List item

可以再%c前 鍵入一個空格 (優解)


eg:scanf(" %c",&a);

這里 %c前面加上空格鍵 可以消除前面所有的空白字符(輸入的時候就會消化掉這個\n) 從而 不需要使用getchar()去吞\n

并且不會為下次留下空白字符的隱患

2.使用getchar()去吞掉緩存區中的\n


while(ch=getchar()!=EOF)

​		getchar();

使用getchar(); 去吞掉緩存區中剩余的 ‘\n' ,從而使程序可以正常運行

到此這篇關于C語言中關于scanf讀取緩存區的問題的文章就介紹到這了,更多相關C語言scanf緩存區內容請搜索html5模板網以前的文章希望大家以后多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 氧化铁红厂家-淄博宗昂化工 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 伸缩节_伸缩器_传力接头_伸缩接头_巩义市联通管道厂 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 工业胀紧套_万向节联轴器_链条-规格齐全-型号选购-非标订做-厂家批发价格-上海乙谛精密机械有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | sus630/303cu不锈钢棒,440C/430F/17-4ph不锈钢研磨棒-江苏德镍金属科技有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 过跨车_过跨电瓶车_过跨转运车_横移电动平车_厂区转运车_无轨转运车 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | UV-1800紫外光度计-紫外可见光度计厂家-翱艺仪器(上海)有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 冻干机(冷冻干燥机)_小型|实验型|食品真空冷冻干燥机-松源 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 工业雾炮机_超细雾炮_远程抑尘射雾器-世纪润德环保设备 | 北京开源多邦科技发展有限公司官网 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 通用磨耗试验机-QUV耐候试验机|久宏实业百科 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 万濠投影仪_瑞士TRIMOS高度仪_尼康投影仪V12BDC|量子仪器 | 散热器厂家_暖气片_米德尔顿散热器 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 |