[英]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 )。 因此,這里沒有緩沖魔法,你只是得到你期望得到的東西: stdout中stdin中放置的完美副本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.