我很困惑getchar()
在以下代码中的角色。我的意思是,我知道它帮助我看到输出窗口,只有当我按Enter键时才会关闭它。
所以getchar()
基本上是在等我按回车,然后读取一个字符。
这个函数读取的是什么单字?我没有按键盘上的任何键让它读。
现在,当它没有读取任何东西,为什么它没有错误地说“嘿,你没有输入任何东西让我阅读”?
#include <stdio.h>
int main()
{
printf( "blah \n" );
getchar();
return 0;
}
发布于 2018-04-20 10:51:04
getchar()
函数只需等待直到接收到一个字符,然后将程序保持到接收为止。
当你按Enter键时会发送一个字符;在Windows操作系统下,它将发送一个回车(CR)和一个行提要(LF)。
发布于 2018-04-20 11:17:26
这是因为getchar()是一个阻塞函数。
你应该阅读关于阻塞函数,这基本上使得进程等待发生。
这种等待行为的实现取决于函数,但通常它是一个等待事件发生的循环。
对于getchar()
函数的情况,这可能被实现为一个不断读取文件(本例为stdin)的循环,并检查文件被修改的天气。如果该文件被修改,则该循环通过执行其他操作来执行。
https://stackoverflow.com/questions/-100008210
复制相似问题