【问题标题】:How to echo stdin to stdout如何将标准输入回显到标准输出
【发布时间】:2013-07-12 01:59:48
【问题描述】:

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

我做的最好的是:

#include <stdio.h>

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

        if(ch == EOF) break;

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

谢谢。

【问题讨论】:

  • 我正在使用 eclipse 和 mingw
  • 这太新人了...我很尴尬在这里问一些如此愚蠢的东西,但我放弃了自己尝试。
  • 你能发布你到目前为止所做的事情吗?
  • @jh314 查看版本。
  • 绝不简单(link)。

标签: c stdout stdin


【解决方案1】:

你需要刷新stdout:

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

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

【讨论】:

  • 我认为我认为这无法解决问题。但是,可能是我一开始就完全不明白这个问题。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    那么如果你这样称呼:

    echo 这是我的输入 | ./myprogram

    它将输出整个标准输入this is my input,而无需点击enter 键。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 2014-02-02
      • 1970-01-01
      相关资源
      最近更新 更多