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í)行getchar都會取走輸入緩沖區(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
當輸入一個字符a時,同時我們會按下回車,此時輸入緩沖區(qū)中就有兩個字符:a\\n
首先,getchar()會先取走字符a,然后通過putchar打印出來
接著循環(huán),getchar()取走字符\\n,然后通過putchar打印出來,所以在輸出中光標不在輸出的a的后面,而在a的下一行

接著,輸入緩沖區(qū)中以無內(nèi)容,getchar()就會讀到EOF,退出循環(huán)
還可以用以下代碼更進一步驗證getchar()對于回車的讀取:
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ù)
+關注
關注
3文章
4406瀏覽量
66843 -
代碼
+關注
關注
30文章
4941瀏覽量
73151
發(fā)布評論請先 登錄

getchar()函數(shù)詳解
評論