2013-07-12 247 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键。