您好,登錄后才能下訂單哦!
今天小編給大家分享一下C語言庫(kù)函數(shù)getchar()怎么使用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
getchar()是stdio.h中的庫(kù)函數(shù),它的作用是從緩沖區(qū)中讀取一個(gè)字符,如果緩沖區(qū)中沒有字符可供讀取,它就會(huì)等待終端鍵盤輸入字符,按回車鍵表示輸入結(jié)束。
* 回車鍵也算一個(gè)字符,放在緩沖區(qū)中(后面會(huì)在VS調(diào)試監(jiān)視出給大家看)*
下面是 getchar() 函數(shù)的聲明:
int getchar(void)
該函數(shù)的返回類型是int類型,返回值是用戶輸入字符的ASCII碼值。
基礎(chǔ)的例子就不列舉了,來說說今天刷C語言題目遇到的一個(gè)題目
判斷輸入的是否是字母(簡(jiǎn)單的題目)
int main() { char a = '0'; scanf("%c", &a); if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z') printf("YES\n"); else printf("NO\n"); return 0; }
直接判斷就可以了,但是我想著可不可以實(shí)現(xiàn)多組輸入,輸入一個(gè)字符判斷一個(gè)字符(雖然題目沒說到)于是我就嘗試寫了如下代碼
int main() { char a = '0'; while (scanf("%c", &a) != EOF) { if (a >= 'a' && a <= 'z' || a >= 'A' && a <= 'Z') printf("YES\n"); else printf("NO\n"); } return 0; }
此時(shí)運(yùn)行結(jié)果如下:
運(yùn)行出來為啥和我想的不一樣,不應(yīng)該輸入一個(gè)只判斷一次嗎?怎么又進(jìn)了一次循環(huán)并自動(dòng)判斷為false輸入NO了?然后我開始調(diào)試。
這是輸入了a之后跳出了第一次循環(huán)
然后我按F10程序繼續(xù)跑了,進(jìn)入了第二次循環(huán)并直接運(yùn)行了else后的語句
此時(shí)我才發(fā)現(xiàn)變量a的值發(fā)生了變化,變成了'\n',我才意識(shí)到鍵盤錄入按回車結(jié)束時(shí),回車也算作一個(gè)字符'\n'被留在了緩沖區(qū),所以進(jìn)行了第二次判斷字符‘\n’,則輸出NO,這時(shí)候我才了解到getchar()函數(shù)在這里使用的好處了,所以我對(duì)代碼進(jìn)行了更改
此時(shí)程序重新運(yùn)行
要想再次使用scanf就要在這里調(diào)用getchar()把緩沖區(qū)的 '\n' 給拿走,才能完成多組輸入字符的判斷
因?yàn)閟canf把\n前面的字符讀取了,此時(shí)緩沖區(qū)還剩下'\n',所以在代碼中加入一條getchar()將'\n'做清除,方便后續(xù)程序的正常進(jìn)行。
以上就是“C語言庫(kù)函數(shù)getchar()怎么使用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。