亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中scanf讀取緩存區的示例分析

發布時間:2021-09-13 12:54:55 來源:億速云 閱讀:191 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關C語言中scanf讀取緩存區的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

前言

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

根據 cplusplus.com的解釋

C語言中scanf讀取緩存區的示例分析

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讀取緩存區的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新昌县| 兴宁市| 和田市| 罗定市| 黔江区| 峨眉山市| 湘阴县| 鹿邑县| 呼和浩特市| 山西省| 怀安县| 平乐县| 化德县| 洛阳市| 甘孜| 东港市| 泾阳县| 定州市| 桂阳县| 白银市| 安吉县| 商河县| 江永县| 隆昌县| 陆川县| 封丘县| 滁州市| 建始县| 东宁县| 德惠市| 西藏| 若尔盖县| 荆州市| 上虞市| 扎囊县| 凭祥市| 新巴尔虎左旗| 宁远县| 南和县| 青川县| 克什克腾旗|