簡體   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