这是一个非常简单的问题,如何将我在stdin中输入的每个字符回显到stdout?我试图做很长一段时间,我尝试了很多方法,没有人运作良好。我能做的最好的事情是在申请结束后得到我输入的内容。
我做的最好的是:
#include <stdio.h>
int main()
{
while (1)
{
int ch = getc(stdin);
if(ch == EOF) break;
putc(ch, stdout);
}
return 0;
}
感谢。
答案 0 :(得分:2)
您需要清空stdout
:
int main()
{
while (1)
{
int ch = getc(stdin);
fflush(stdout);
if(ch == EOF) break;
putc(ch, stdout);
}
return 0;
}
答案 1 :(得分:0)
只要您点击enter,您所拥有的代码就可以正常运行。在大多数系统中,程序将以面向行的方式获得输入。如果要在击中后立即回显键,则需要更改程序的输入方法。在许多系统上,这将是getch()
,但在使用界面之前可能还需要满足其他要求(例如,ncurses
需要一些额外的设置)。
在按下键后立即回显数据时,您将需要以某种方式刷新输出。如果您要将输出发送到stdout
,则可以调用fflush()
。如果您使用某些特定于系统的输出命令,则可能需要调用某种类型或窗口刷新例程。
答案 2 :(得分:0)
我想知道是否会有更好的方式:
int ch;
while((ch = getchar()) >= 0)
{
putchar(ch);
}
然后,如果你这样称呼:
回声这是我的输入| ./myprogram
它会输出整个标准this is my input
而不会点击enter
键。