按Enter键后,getche清除屏幕

时间:2011-12-15 07:32:05

标签: c windows visual-studio

我在C中尝试字符输入函数。以下是我运行的程序,用于交换getch和getche函数调用进行实验。

#include <stdio.h>
#include <conio.h>
#define MAX_CHARS   255
int main(){
//getche experiments
    char buffer[MAX_CHARS+1],ch;
    int x = 0;
    while(x<MAX_CHARS&&(ch=getch())!='\r'){//relacing getch here with getche
        buffer[x++]=ch;
        putchar(ch);
    }
    buffer[x]='\0';
    printf("%s",buffer);
    return 0;
}
  • 当我用getch()运行程序时,我会看到每个字符 我通过键盘输入后立即打印(感谢 putchar),一旦我按下输入整行(感谢printf 最后的声明)。所以没关系。
  • 当我用getche替换getch时,我预期的唯一区别是 我会尽快得到我输入的每个字符两次 输入(因为getche将字符回显到stdout)并打印该行 在我按下回车后最后。但是一按下进入整个屏幕 清除并打印行。

为什么屏幕在最后打印前会被清除?

谢谢

1 个答案:

答案 0 :(得分:0)

在不知道getche的文档说明的情况下,我们无法知道。没有这样的标准功能。我的猜测是它写入了一个printf写入的不同屏幕。屏幕被清除,因为您已从一个屏幕(the raw 'console' screen you echoed to)切换到另一个屏幕(程序的标准输出连接到的普通终端)。

您的平台getche的文档说了什么?