2013-07-12 467 views
1

這是一個非常簡單的問題,如何回顯我輸入標準輸入到標準輸出的每個字符?我試圖做很長時間,我嘗試了很多方法,沒有人能夠很好地工作。我能做的最好的是在應用程序結束後獲得我輸入的內容。如何回顯標準輸出到標準輸出

我做的最好的是:

#include <stdio.h> 

int main() 
{ 
    while (1) 
    { 
     int ch = getc(stdin); 

     if(ch == EOF) break; 

     putc(ch, stdout); 
    } 
    return 0; 
} 

感謝。

+0

我正在使用eclipse和mingw –

+0

這是如此新手......我很尷尬地問這裏有那麼愚蠢的事情,但我放棄了自己嘗試。 –

+1

你可以發表你迄今爲止所做的事嗎? – jh314

回答

2

您需要衝洗stdout

int main() 
{ 
    while (1) 
    { 
     int ch = getc(stdin); 
     fflush(stdout); 
     if(ch == EOF) break; 

     putc(ch, stdout); 
    } 
    return 0; 
} 
+0

我不認爲我相信這可以做任何事情來解決這個問題。但是,可能情況是我完全不瞭解這個問題。 – jxh

0

你的代碼應該工作得很好,只要你打。在大多數系統中,程序將以面向行的方式得到輸入。如果您想在鍵擊後立即回顯鍵,則需要更改程序的輸入方法。在許多系統上,這將是getch(),但在使用該接口之前可能還有其他一些要求需要滿足(例如,ncurses需要一些額外的設置)。

當鍵被擊中後立即回顯數據時,您將需要以某種方式刷新輸出。如果您要將輸出發送至stdout,則可致電fflush()。如果您使用某種系統特定的輸出命令,則可能需要調用某種類型或窗口刷新例程。

0

我不知道是否有更好的方式是:

int ch; 
while((ch = getchar()) >= 0) 
{ 
    putchar(ch); 
} 

然後,如果你把這個:

呼應,這是我的輸入| ./myprogram

它會輸出整個標準桿this is my input而不會觸及enter鍵。