getchar()
getchar的定義:
int getchar(void)
返回類型是int值,所以返回的是字符的ASCII碼
參數(shù)列表中是void,所以不必在括號中傳參數(shù)
如果getchar讀取失敗,就會返回EOF
getchar()的一個重要機制
在getchar函數(shù)的作用與鍵盤間,存在一個輸入緩沖區(qū),從鍵盤輸入的內(nèi)容會存在這個緩沖中,接下來getchar函數(shù)會從緩沖區(qū)中取走內(nèi)容
因為getchar是對于字符進行操作,所以每次執(zhí)行g(shù)etchar都會取走輸入緩沖區(qū)中一個字符
并且getchar還會取走回車也就是\\n與空格
我們用下面的代碼進行對輸入緩沖區(qū)機制的測試:
int main()
{
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
1
2
3
4
5
6
7
8
9
當(dāng)輸入一個字符a時,同時我們會按下回車,此時輸入緩沖區(qū)中就有兩個字符:a\\n
首先,getchar()會先取走字符a,然后通過putchar打印出來
接著循環(huán),getchar()取走字符\\n,然后通過putchar打印出來,所以在輸出中光標不在輸出的a的后面,而在a的下一行
接著,輸入緩沖區(qū)中以無內(nèi)容,getchar()就會讀到EOF,退出循環(huán)
還可以用以下代碼更進一步驗證getchar()對于回車的讀?。?/p>
int main()
{
int i = 0;
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
i++;
}
printf("%d", i);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
輸入字符a和b,這里實際上是輸入a后,按一次回車,輸入b后,按一次回車,所以輸入緩沖區(qū)中的內(nèi)容為:a\\nb\\n,所以getchar()會讀取四次,所以i的值為會是4
原文鏈接:https://blog.csdn.net/weixin_64116522/article/details/127956631
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64906 -
代碼
+關(guān)注
關(guān)注
30文章
4900瀏覽量
70758
發(fā)布評論請先 登錄
stm32f103rct6 prinrf可以正常使用,但是無法使用getchar和scanf函數(shù),為什么?
USART中的getchar()函數(shù)功能不能實現(xiàn)
linux getchar函數(shù)的特點與使用
怎樣用printf 函數(shù)和getchar 函數(shù)去簡化STM32串口數(shù)據(jù)的傳輸呢
新手求助啟用RT_USING_POSIX時getchar調(diào)用過程
getch與getchar的區(qū)別是什么?
網(wǎng)絡(luò)函數(shù)的習(xí)題與詳解詳細說明

Linux內(nèi)核GPIO操作函數(shù)的詳解分析
Android開發(fā)手冊API函數(shù)詳解資料免費下載
空閑任務(wù)鉤子函數(shù)詳解

評論