【发布时间】:2020-01-16 11:36:20
【问题描述】:
int main()
{
int a;
a = getchar();
printf("%d", a);
}
output
10
这是当我编写这样的代码并在控制台上只敲击“输入”键时。击键“输入”效果 1. 在缓冲区中放入一个 '\n' 2. 将该值依次返回给 getchar(这是我对这种情况的理解)。怎么可能?这个结果就像按两次回车键。我找到了一个相关的问题getchar,但是我找不到可以帮助我理解的东西。
【问题讨论】:
-
使用显示的代码,您不需要按两次回车键。终端应该将第一个识别为结束行并将“发送”(否则为空)行到您的程序。
-
@Some程序员老兄那你的意思是放任何一个键就足以让值'\n'返回到getchar?还是只输入键?
-
如果您按仅
Enter键,则换行符将是添加到输入缓冲区的唯一字符。 -
@Some 程序员老兄 好的,输入缓冲区有'\n',只需按下
Enter键,但变量a有'\n' 吗?只需按下键Enter。不是吗? -
简化,终端将换行符写入程序输入缓冲区。您的程序(通过
getchar函数)从输入缓冲区读取换行符并将其写入a变量。从终端或控制台,一直到操作系统、驱动程序和缓冲区,再到变量a,都是同一个换行符。
标签: c character newline stdin getchar