最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言清除scanf()緩存的案例講解

 更新時(shí)間:2019年03月29日 09:58:52   作者:徐劉根  
今天小編就為大家分享一篇關(guān)于C語言清除scanf()緩存的案例講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

又重新過一遍C語言,感覺每次重學(xué)C語言都有不同的感受,遇到了一個(gè)問題,就是scanf()這個(gè)問題,其實(shí)細(xì)究起來,也有很多可以值得深挖的,實(shí)際上每次細(xì)細(xì)的挖掘的話,都是對C語言的更透徹的認(rèn)識.

那么下面我就對scanf()中清除輸入緩沖區(qū)的方法講解:

應(yīng)用場景:我們使用多個(gè)scanf()的時(shí)候,如果輸入緩沖區(qū)還有數(shù)據(jù)的話,那么scanf()就不會(huì)詢問用戶輸入,而是直接就將輸入緩沖區(qū)的內(nèi)容拿出來用了,這就導(dǎo)致了前面的錯(cuò)誤影響到后面的內(nèi)容,為了隔離這種問題,

總的思想:通過各種方法將輸入緩沖區(qū)的內(nèi)容讀出來.

(1)清除緩存的函數(shù)是:

void safe_flush(FILE *fp)
{
 int ch;
 while( (ch = fgetc(fp)) != EOF && ch != '\n' );     
}

(2)然后我們在使用的時(shí)候,直接調(diào)用就可以了:

scanf("%d",&k);
safe_flush(stdin);

這樣就可以清除緩存帶來的問題了!

(3)案例演示

a.當(dāng)我們不清除scanf所帶來的危害的時(shí)候:

#include<stdio.h>
#include<string.h>
int main()
{
 int k;
 printf("請輸入你的秘鑰:(整數(shù))");
 scanf("%d",&k);
 char c;
 printf("請輸入一個(gè)字符:");
 c = getchar();
 printf("%d ",k);
 printf("%c ",c);
}

我們發(fā)現(xiàn) 我們輸入一個(gè)整數(shù)的時(shí)候,就自動(dòng)結(jié)束程序了,并且將輸入的數(shù)值作為緩存給了字符c

然后我們清除緩存:

#include<stdio.h>
#include<string.h>
//用于清除回車鍵緩存的影響
void safe_flush(FILE *fp)
{
 int ch;
 while( (ch = fgetc(fp)) != EOF && ch != '\n' );
}
int main()
{
 int k;
 printf("請輸入你的秘鑰:(整數(shù))");
 scanf("%d",&k);
 safe_flush(stdin);
 char c;
 printf("請輸入一個(gè)字符:");
 c = getchar();
 printf("%d ",k);
 printf("%c ",c);
}

當(dāng)我們輸入整數(shù)之后,提示我們輸入字符,顯然消除了緩存

ok!

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • C++中的多態(tài)詳談

    C++中的多態(tài)詳談

    多態(tài)通俗來說就是多種形態(tài),本文通過實(shí)例代碼給大家介紹C++中的多態(tài)定義及實(shí)現(xiàn),通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-05-05
  • C++之try catch 異常處理入門實(shí)例

    C++之try catch 異常處理入門實(shí)例

    我們通常希望自己編寫的程序能夠在異常的情況下也能作出相應(yīng)的處理,而不至于程序莫名其妙地中斷或者中止運(yùn)行了。在設(shè)計(jì)程序時(shí)應(yīng)充分考慮各種異常情況,并加以處理
    2018-01-01
  • 詳解C語言中雙向循環(huán)鏈表的實(shí)現(xiàn)

    詳解C語言中雙向循環(huán)鏈表的實(shí)現(xiàn)

    雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個(gè)數(shù)據(jù)結(jié)點(diǎn)中都有兩個(gè)指針,分別指向直接后繼和直接前驅(qū)。本文將用C語言實(shí)現(xiàn)雙向循環(huán)鏈表,需要的可以參考一下
    2022-06-06
  • C語言實(shí)現(xiàn)獲取文件大小與創(chuàng)建修改時(shí)間

    C語言實(shí)現(xiàn)獲取文件大小與創(chuàng)建修改時(shí)間

    這篇文章主要為大家詳細(xì)介紹了如何通過C語言實(shí)現(xiàn)獲取文件大小、創(chuàng)建時(shí)間與修改時(shí)間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • c++實(shí)現(xiàn)解析zip文件的示例代碼

    c++實(shí)現(xiàn)解析zip文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用c++實(shí)現(xiàn)解析zip文件,并對流式文件pptx內(nèi)容的修改,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下
    2023-12-12
  • QT使用QFile進(jìn)行文件操作

    QT使用QFile進(jìn)行文件操作

    本文主要介紹了QT使用QFile進(jìn)行文件操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C/C++實(shí)現(xiàn)內(nèi)存泄漏檢測詳解

    C/C++實(shí)現(xiàn)內(nèi)存泄漏檢測詳解

    這篇文章主要為大家詳細(xì)介紹了c++進(jìn)行內(nèi)存泄漏檢測的方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下,希望能夠給你帶來幫助
    2023-02-02
  • C語言實(shí)現(xiàn)實(shí)時(shí)鐘表

    C語言實(shí)現(xiàn)實(shí)時(shí)鐘表

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)實(shí)時(shí)鐘表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言指針超詳細(xì)講解下篇

    C語言指針超詳細(xì)講解下篇

    指針提供了對地址操作的一種方法,因此,使用指針可使得?C?語言能夠更高效地實(shí)現(xiàn)對計(jì)算機(jī)底層硬件的操作。另外,通過指針可以更便捷地操作數(shù)組。在一定意義上可以說,指針是?C?語言的精髓
    2022-04-04
  • Qt編寫地圖實(shí)現(xiàn)閃爍點(diǎn)圖的示例代碼

    Qt編寫地圖實(shí)現(xiàn)閃爍點(diǎn)圖的示例代碼

    閃爍點(diǎn)圖的核心有三個(gè)要素,城市的名稱、城市的經(jīng)緯度、對應(yīng)值的大小,當(dāng)值越大閃爍點(diǎn)也就越大,本文就來實(shí)現(xiàn)一下地圖閃爍點(diǎn)圖,具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-12-12

最新評論

高青县| 修文县| 凌源市| 屏东县| 庄浪县| 扶绥县| 天台县| 扶沟县| 平湖市| 永寿县| 莎车县| 汉中市| 林口县| 东方市| 米易县| 双桥区| 宣武区| 蒙自县| 玉龙| 南城县| 屏边| 江安县| 房产| 广西| 定南县| 元朗区| 黔南| 临江市| 贵南县| 阿图什市| 望都县| 平江县| 修武县| 阿尔山市| 中卫市| 枝江市| 浠水县| 宝应县| 成安县| 皮山县| 苏尼特右旗|