#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键,关键是我关闭输出缓冲区并刷新输出缓冲区。
答案 0 :(得分:3)
默认情况下,终端处于规范模式,只有当行分隔符(换行符,行开头的输入结束等)输入时,才会将输入传递给程序。键入。
操作终端的方法 - 例如,在发生按键时立即获得按键 - 在操作系统之间有所不同。 Curses库(Windows的PDCurses,几乎所有其他的ncurses)隐藏了单个界面下的差异,所以你可能希望研究它。