1

这是一个非常简单的问题,如何将我在标准输入中输入的每个字符回显到标准输出?我尝试了很长时间,并且尝试了很多方法,但没有一种效果很好。我能做的最好的事情就是在申请结束后得到我输入的内容。

我做的最好的是:

#include <stdio.h>

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

        if(ch == EOF) break;

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

谢谢。

4

3 回答 3

2

您需要冲洗stdout

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

        putc(ch, stdout);
    }
    return 0;
}
于 2013-07-12T02:15:05.630 回答
0

只要您按 ,您拥有的代码应该可以正常工作。在大多数系统中,程序将以面向行的方式获取输入。如果您想在击键后立即回显该键,则需要更改程序的输入法。在许多系统上,这将是getch(),但在您可以使用该界面之前,您可能必须满足其他要求(ncurses例如,需要一些额外的设置)。

在击键后立即回显数据时,您将需要以某种方式刷新输出。如果您将输出发送到stdout,则调用fflush()将起作用。如果您使用某些系统特定的输出命令,您可能需要调用某种类型或窗口刷新例程。

于 2013-07-12T02:21:02.247 回答
0

我想知道是否有更好的方法是:

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

然后,如果你这样称呼:

回声这是我的输入 | ./我的程序

它会输出整个标准输入this is my input而无需enter按键。

于 2016-05-01T17:20:15.570 回答