簡體   English   中英

getchar()在while循環中的行為

[英]Behavior of getchar() inside while loop

int main()
{
int c;

  while ( (c = getchar())  != EOF)
    putchar(c);

}

現在,運行上面的程序產生

$。/ a.out thisisthelinewhosestoragelocationisamysterytome - LINE1 thisisthelinewhosestoragelocationisamysterytome - LINE2

當我輸入LINE1的字符時,我認為函數getchar()和putchar()一直在處理字符,或者我錯了?

這是我的問題。

在我輸入后,我的LINE1完全復制到LINE2 ,這意味着它應該在其他地方緩沖,那么它存儲在哪里? 為什么這樣實現呢?

在您輸入整行之前,您的程序不會從shell接收輸入。

系統的默認行為是緩沖輸入,直到它看到換行符,這樣您就可以選擇在程序看到它之前點擊退格並對該行進行編輯。

我將省略系統的I / O機制,以便為您的程序提供輸入流並從中獲取輸出流。 (因為我不知道他們)

getchar()函數只是從stdin中 檢索 一個字符。 另一方面, putchar()只將一個字符放入輸出流( stdout )。 因此,這里沒有緩沖魔法,你只是得到你期望得到的東西: stdoutstdin中放置的完美副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM