91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

昭觉县| 博野县| 天等县| 资兴市| 巩留县| 库伦旗| 攀枝花市| 光泽县| 阳城县| 东城区| 唐海县| 区。| 锦屏县| 神农架林区| 霍山县| 滦平县| 米脂县| 临安市| 尼木县| 新余市| 鄂托克前旗| 曲阳县| 寻乌县| 雅江县| 天祝| 延安市| 集安市| 古田县| 长岛县| 佛冈县| 阳东县| 台中县| 泽普县| 九寨沟县| 大邑县| 渝中区| 黎川县| 白朗县| 礼泉县| 攀枝花市| 景泰县|