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文章
4341瀏覽量
62799 -
代碼
+關(guān)注
關(guān)注
30文章
4808瀏覽量
68810
發(fā)布評論請先 登錄
相關(guān)推薦
評論