麻烦帮我一个小C程序

时间:2017-02-15 13:24:15

标签: c

#include <stdio.h>

int main(void)
{
    char ch;
    setbuf(stdout, NULL);
    while ( (ch = fgetc(stdin) ) != '\n' && ch != EOF){
        fputc(ch, stdout);
        fflush(stdout);
    };
    return 0;
}

为什么我看到的不是在控制台上输入字符的字符,而是在所有输出后按Enter键,关键是我关闭输出缓冲区并刷新输出缓冲区。

1 个答案:

答案 0 :(得分:3)

默认情况下,终端处于规范模式,只有当行分隔符(换行符,行开头的输入结束等)输入时,才会将输入传递给程序。键入。

操作终端的方法 - 例如,在发生按键时立即获得按键 - 在操作系统之间有所不同。 Curses库(Windows的PDCurses,几乎所有其他的ncurses)隐藏了单个界面下的差异,所以你可能希望研究它。