getchar()是stdio.h中的庫函數,它的作用是從緩沖區中讀取一個字符,如果緩沖區中沒有字符可供讀取,它就會等待終端鍵盤輸入字符,按回車鍵表示輸入結束。
* 回車鍵也算一個字符,放在緩沖區中(后面會在VS調試監視出給大家看)*
下面是 getchar() 函數的聲明:
intgetchar(void)
該函數的返回類型是int類型,返回值是用戶輸入字符的ASCII碼值。
基礎的例子就不列舉了,來說說今天刷C語言題目遇到的一個題目
判斷輸入的是否是字母(簡單的題目)
intmain(){chara='0';scanf("%c",&a);if(a>='a'&&a<='z'||a>='A'&&a<='Z')printf("YES\n");elseprintf("NO\n");return0;}
直接判斷就可以了,但是我想著可不可以實現多組輸入,輸入一個字符判斷一個字符(雖然題目沒說到)于是我就嘗試寫了如下代碼
intmain(){chara='0';while(scanf("%c",&a)!=EOF){if(a>='a'&&a<='z'||a>='A'&&a<='Z')printf("YES\n");elseprintf("NO\n");}return0;}
此時運行結果如下:
運行出來為啥和我想的不一樣,不應該輸入一個只判斷一次嗎?怎么又進了一次循環并自動判斷為false輸入NO了?然后我開始調試。
這是輸入了a之后跳出了第一次循環
然后我按F10程序繼續跑了,進入了第二次循環并直接運行了else后的語句
此時我才發現變量a的值發生了變化,變成了'\n',我才意識到鍵盤錄入按回車結束時,回車也算作一個字符'\n'被留在了緩沖區,所以進行了第二次判斷字符‘\n’,則輸出NO,這時候我才了解到getchar()函數在這里使用的好處了,所以我對代碼進行了更改
此時程序重新運行
要想再次使用scanf就要在這里調用getchar()把緩沖區的 '\n' 給拿走,才能完成多組輸入字符的判斷
因為scanf把\n前面的字符讀取了,此時緩沖區還剩下'\n',所以在代碼中加入一條getchar()將'\n'做清除,方便后續程序的正常進行。
以上就是“C語言庫函數getchar()怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注本站行業資訊頻道。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
5月份,有多位網友反映,鄭州富士康在“高速路口搶人”,很多人不明白,富士康作為全球規模最大的代工廠,為什么要“搶人”么?富士康高速路口搶人背后的真相不簡單。根據知情人透露,富士康高速路口搶人背后的真相是,由于用工需求大,同時配合疫情防控管理需要,鄭州富士康iDPBG事業群特地安排了免費大巴在高速收費口接駁點,接送求職者前往港區富士康報到。除了上述這個...
巴勒斯坦忍無可忍!如果你再忍下去,巴勒斯坦就會滅亡!近日,一張巴勒斯坦領土地圖在網上瘋傳。在這張地圖上,原本屬于巴勒斯坦的領土越來越少,而與以色列相鄰的領土越來越多。巴勒斯坦失去的每一寸土地都被以色列吞并了。據估計,按照這個速度,到2050年,巴勒斯坦可能已經從地球上消失,讓全世界頭疼的巴以矛盾也將徹底消失。因為未來以色列會吃掉并吞并所有的巴勒斯坦領土,巴勒斯坦會滅亡。在這一輪巴以沖突中,網上已經...
現貨倉單是什么?現貨倉單是一種憑證,表示倉單中規定的標準轉運,可以在指定倉庫購買或出售?,F貨倉單以企業一定保證金的形式進行交易?,F貨倉單交易和期貨交易很像。它不僅是一種商品交易手段,也是一種金融投資手段。他和期貨在定義上的區別在于,目標商品在指定倉庫的交割時間可以是持有現貨倉單到現貨倉單最后一個交易日的一段時間。期貨合約對目標商品有明確的交割日期。如何控制期貨投資者的風險?作為期貨市場的投資者,尤...