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