getchar()在C中给出输出
该计划应该做什么,
#include main() { getchar(); }
我希望它能显示一个空白屏幕,直到我敲击键盘上的任何字符。 但它的作用很奇怪。 它会显示我按下的内容。 它永远不会终止,直到我按Enter键。
据我所知,getchar()应该只读一个字符。 它不应该输出任何东西。
- 为什么要打印我输入的每个字符?
编辑:
为什么getchar()在读取一个字符后停止,例如在此代码中:
#include main() { getchar(); printf("Done"); }
阅读一个字符后,程序应打印完成。
在getchar()
完成之前,您的程序不会终止。 在填充输入缓冲区之前, getchar()
不会完成。 在您按“Enter”之前,不会填充输入缓冲区。
您看到的角色是您正在键入的角色。 这是默认的终端驱动行为,不是由您的程序驱动的。
您正在按键,因此您的控制台显示相同的字符。 这是预期的行为。 getch()
还将返回正在屏幕上打印的字符的ascii值。
getchar
基本上做的是从stdin读取。 这是一个文件描述符为0的文件,它通常是指您键入的终端(除非您通过<
,例如cat < sample.txt
将其更改为某个文件)。 与任何文件一样,您可以调用文件0上的read
- 如果是终端,只要您在终端输入内容并按回车键 , read
就会响应。 除非你这样做,否则read
stdin的调用只会等待它才能读取。 这就是你的程序正在等待的原因:它调用stdin read
(文件0),并且因为stdin是终端,所以只有当你按Enter键时才会返回。 我希望你对文件处理有一些了解,否则这个答案可能会让你感到困惑。