getchar()
getchar的定義:
int getchar(void)
返回類(lèi)型是int值,所以返回的是字符的ASCII碼
參數(shù)列表中是void,所以不必在括號(hào)中傳參數(shù)
如果getchar讀取失敗,就會(huì)返回EOF
getchar()的一個(gè)重要機(jī)制
在getchar函數(shù)的作用與鍵盤(pán)間,存在一個(gè)輸入緩沖區(qū),從鍵盤(pán)輸入的內(nèi)容會(huì)存在這個(gè)緩沖中,接下來(lái)getchar函數(shù)會(huì)從緩沖區(qū)中取走內(nèi)容
因?yàn)間etchar是對(duì)于字符進(jìn)行操作,所以每次執(zhí)行g(shù)etchar都會(huì)取走輸入緩沖區(qū)中一個(gè)字符
并且getchar還會(huì)取走回車(chē)也就是\\n與空格
我們用下面的代碼進(jìn)行對(duì)輸入緩沖區(qū)機(jī)制的測(cè)試:
int main()
{
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
1
2
3
4
5
6
7
8
9
當(dāng)輸入一個(gè)字符a時(shí),同時(shí)我們會(huì)按下回車(chē),此時(shí)輸入緩沖區(qū)中就有兩個(gè)字符:a\\n
首先,getchar()會(huì)先取走字符a,然后通過(guò)putchar打印出來(lái)
接著循環(huán),getchar()取走字符\\n,然后通過(guò)putchar打印出來(lái),所以在輸出中光標(biāo)不在輸出的a的后面,而在a的下一行
接著,輸入緩沖區(qū)中以無(wú)內(nèi)容,getchar()就會(huì)讀到EOF,退出循環(huán)
還可以用以下代碼更進(jìn)一步驗(yàn)證getchar()對(duì)于回車(chē)的讀?。?/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,這里實(shí)際上是輸入a后,按一次回車(chē),輸入b后,按一次回車(chē),所以輸入緩沖區(qū)中的內(nèi)容為:a\\nb\\n,所以getchar()會(huì)讀取四次,所以i的值為會(huì)是4
原文鏈接:https://blog.csdn.net/weixin_64116522/article/details/127956631
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4237瀏覽量
61973 -
代碼
+關(guān)注
關(guān)注
30文章
4671瀏覽量
67771
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論