[英]getchar() is giving output in C
这个程序应该做什么
#include<stdio.h>
main()
{
getchar();
}
我希望它显示空白屏幕,直到我敲击键盘上的任何字符为止。 但是它的确很奇怪。 它显示我按的任何内容。 直到我按Enter键,它才会终止。
据我所知,getchar()应该只读取一个字符。 它不应输出任何内容。
- 为什么要打印我输入的每个字符?
编辑:
为什么getchar()在读取一个字符后没有停止,例如在以下代码中:
#include <stdio.h>
main()
{
getchar();
printf("Done");
}
读取一个字符后,程序应打印完成。
直到getchar()
完成,您的程序才会终止。 在填充输入缓冲区之前, getchar()
不会完成。 直到按“ Enter”键,才会填充输入缓冲区。
您看到的字符就是您键入的字符。 这是默认的终端驱动行为,而不是由程序驱动。
您按键,因此您的控制台向您显示相同的字符。 这是预期的行为。 getch()
还将返回在屏幕上打印的字符的ascii值。
getchar
基本上所做的是从stdin中读取。 这是一个文件描述符为0的文件,通常指您键入的终端(除非您通过<
将其更改为某个文件,例如cat < sample.txt
)。 与任何文件一样,您可以在文件0上调用read
在终端机的情况下,只要在终端机中输入内容并按enter键 , read
就会响应。 除非您这样做,否则在stdin上进行read
的调用只会等到可以读取为止。 这就是程序等待的原因:它在stdin(文件0)上调用read
,并且由于stdin是终端,因此只有在按Enter键时read
才会返回。 希望您对文件处理有所了解,否则此答案可能会使您感到困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.