getchar()
getchar的定义:
int getchar(void)
返回类型是int值,所以返回的是字符的ASCII码
参数列表中是void,所以不必在括号中传参数
如果getchar读取失败,就会返回EOF
getchar()的一个重要机制
在getchar函数的作用与键盘间,存在一个输入缓冲区,从键盘输入的内容会存在这个缓冲中,接下来getchar函数会从缓冲区中取走内容
因为getchar是对于字符进行操作,所以每次执行getchar都会取走输入缓冲区中一个字符
并且getchar还会取走回车也就是\\n与空格
我们用下面的代码进行对输入缓冲区机制的测试:
int main()
{
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
1
2
3
4
5
6
7
8
9
当输入一个字符a时,同时我们会按下回车,此时输入缓冲区中就有两个字符:a\\n
首先,getchar()会先取走字符a,然后通过putchar打印出来
接着循环,getchar()取走字符\\n,然后通过putchar打印出来,所以在输出中光标不在输出的a的后面,而在a的下一行

接着,输入缓冲区中以无内容,getchar()就会读到EOF,退出循环
还可以用以下代码更进一步验证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后,按一次回车,所以输入缓冲区中的内容为:a\\nb\\n,所以getchar()会读取四次,所以i的值为会是4
原文链接:https://blog.csdn.net/weixin_64116522/article/details/127956631
-
函数
+关注
关注
3文章
4408浏览量
66953 -
代码
+关注
关注
30文章
4947浏览量
73270
发布评论请先 登录
stm32f103rct6 prinrf可以正常使用,但是无法使用getchar和scanf函数,为什么?
USART中的getchar()函数功能不能实现
linux getchar函数的特点与使用
怎样用printf 函数和getchar 函数去简化STM32串口数据的传输呢
新手求助启用RT_USING_POSIX时getchar调用过程
getch与getchar的区别是什么?
putchar()函数详解

getchar()函数详解
评论