日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言清空缓冲区

發布時間:2025/1/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言清空缓冲区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看下面一個例子:

[cpp]?view plaincopy
  • #include?<stdio.h>??
  • int?main()??
  • {??
  • ????int?num;??
  • ????char?ch?;??
  • ????scanf("%d",?&num);??
  • ????scanf("%c",?&ch);??
  • ????printf("hello?world\n");??
  • ????system("pause");??
  • ????return?0;??
  • }??


  • 設想輸入一個數字和一個字母,應該出現如下情況

    1

    a

    hello world

    但事實是下面的樣子

    1

    hello world

    -----------------------------

    原因是:在輸入回車(‘\n’)時,相當于輸入了一個字符,這樣緩沖區內就殘留了一個‘\n’。


    再有就是我們使用scanf("%c",?&ch);在中斷接受一個字符,但若用戶輸入好幾個字符,那么ch將只接受一個,而這時大量字符滯留在緩沖區內,下次再調用scanf時,還沒有輸入東西,緩沖區內的內容直接傳到了scanf內,這樣就造成了嚴重的錯誤。

    下面是幾種解決辦法:

    ①解決辦法一

    [cpp]?view plaincopy
  • #include?<stdio.h>??
  • int?main()??
  • {??
  • ????int?num;??
  • ????char?ch?;??
  • ????scanf("%d",?&num);??
  • ????setbuf(stdin,?NULL);//使stdin輸入流由默認緩沖區轉為無緩沖區??
  • ????scanf("%c",?&ch);??
  • ????printf("hello?world\n");??
  • ????system("pause");??
  • ????return?0;??
  • }??


  • 使用setbuf(stdin,null);可以使stdin輸入流由默認緩沖區轉為無緩沖區,這樣scanf輸入完畢后,緩沖區內的東西就消失了。

    [cpp]?view plaincopy
  • #include?<stdio.h>??
  • int?main()??
  • {??
  • ????int?num;??
  • ????char?ch?;??
  • ????scanf("%d",?&num);??
  • ????while?((c?=?getchar())?!=?EOF?&&?c?!=?'\n');//不停地使用getchar()獲取緩沖中字符,直到獲取的c是“\n”或文件結尾符EOF為止??
  • ????scanf("%c",?&ch);??
  • ????printf("hello?world\n");??
  • ????system("pause");??
  • ????return?0;??
  • }??


  • 使用getchar不斷獲取緩沖區內的內容,直到緩沖區內空為止,這種方法很有效,建議使用,C primer 上也介紹了這種方法。


    注意:有很多人可能覺得使用fflush(stdin);不就能清空緩沖區了,但使用這種方法有很多不確定性。

    網上查了原因:C和C++的標準里從來沒有定義過 fflush(stdin)。
    某些編譯器(如VC6)支持用 fflush(stdin) 來清空輸入緩沖,
    但是并非所有編譯器都要支持這個功能(Linux?下的 gcc 就不支持),//親測確實如此在linux的gcc下不能清空緩沖區
    因為標準中根本沒有定義 fflush(stdin)。

    MSDN 文檔里 也清楚地寫著
    fflush on input stream is an extension to the C standard(fflush 操作輸入流是對 C 標準的擴充)。

    總結

    以上是生活随笔為你收集整理的C语言清空缓冲区的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: www.自拍偷拍 | 欧美一级片| 成人免费久久 | av影音先锋 | 亚洲成人福利 | 97se在线| 华人永久免费视频 | 久久深夜| 熟妇大屁股一区二区三区视频 | 国产午夜伦鲁鲁 | 黄页网站视频 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲综合图区 | 少妇荡乳情欲办公室456视频 | 一区二区亚洲精品 | 奇米四色影视 | 少妇户外露出[11p] | 女人被男人躁得好爽免费视频 | 久久久久久激情 | 在线播放a | 欧美日韩女优 | 成年人色片 | 不卡的一区二区 | 日韩激情在线 | 91视频网 | 国产精品白嫩极品美女视频 | 草草影院第一页yycc.com | 91娇羞白丝 | 久久精品www人人爽人人 | 视频久久 | 日韩一区二区三区免费视频 | 亚洲综合色婷婷 | 国产在线成人精品午夜 | 能免费看黄色的网站 | 一区二区在线免费视频 | 日本高清视频在线播放 | 色吧av | www.av777| 毛片网站在线播放 | 久草成人网| 一区二区三区精品在线观看 | 欧美理伦片在线播放 | 日韩av毛片 | 国产在线观看av | 国产精品一区二区三区在线播放 | 国产日韩激情 | 香蕉久久久久 | 狠狠躁夜夜躁人人爽视频 | 国产精品美女www爽爽爽 | 在线成人小视频 | 一区不卡av | 99视频在线免费观看 | 久色99 | 中国国产黄色片 | 神马九九| 天天爽天天色 | 日本精品免费一区二区三区 | 亚欧美在线 | 夏晴子在线 | 日韩成人av在线 | 丝袜美腿亚洲一区二区图片 | 欧美另类在线视频 | 午夜久久福利 | 五月婷婷国产 | 久久免费视屏 | 国产精品乱子伦 | 天堂аⅴ在线最新版在线 | 国产另类在线 | 亚洲精品喷潮一区二区三区 | 日韩www视频| 特黄三级又爽又粗又大 | 欧美一级特黄aaaaaa | 国产精品99久久久久久www | 亚洲高清精品视频 | 骑骑上司妻电影 | 精品人妻一区二区三区蜜桃 | 国产又色又爽又黄 | 妹子干综合 | 久久精工是国产品牌吗 | 亚洲第一视频在线播放 | 亚洲视频在线免费播放 | 深夜国产视频 | 91国在线观看| 色呦呦官网 | 免费观看视频在线观看 | 美女露出让男生揉的视频 | 欧美tickle狂笑裸体vk | 午夜伦伦电影理论片费看 | 一级黄色片毛片 | 免费久久久久 | 日本免费色视频 | 久久久久久久久99精品 | 国产任你操 | 一本到在线观看 | 让男按摩师摸好爽 | 激情综合五月天 | www.操 | 超碰人人91 | 国产h在线 |