網站首頁 編程語言 正文
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'做清除,方便后續程序的正常進行。
總結
以上就是我對getchar()部分理解,希望對大家有幫助,有待改進的地方希望大家隨時指出!
原文鏈接:https://blog.csdn.net/m0_56742126/article/details/125859569
相關推薦
- 2022-08-21 Android貝塞爾曲線實現加入購物車拋物線動畫_Android
- 2022-09-29 go日志庫logrus的安裝及快速使用_Golang
- 2022-06-20 python中的隨機數?Random介紹_python
- 2022-08-25 消息交換模式RabbitMQ簡介_其它綜合
- 2023-01-01 一文帶你弄懂Python3中的def?__init___python
- 2024-07-15 pgsql設置主鍵自增
- 2022-04-09 windows一鍵啟動多個bat批處理文件或者啟動多個cmd窗口執行命令
- 2023-05-10 Numpy中np.dot與np.matmul的區別詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支