繁体   English   中英

getchar()在C中给出输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM