c - getche 按 Enter 后清除屏幕

标签 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 将字符回显到标准输出)并打印该行 最后在我按回车键后。但是一旦我按回车键整个屏幕 被清除并打印该行。

为什么最后打印前屏幕会变清?

谢谢

最佳答案

如果不知道您的 getche 文档的内容,我们就无法知道。没有这样的标准函数。我的猜测是它写入的屏幕与 printf 写入的屏幕不同。屏幕正在变得清晰,因为您已从一个屏幕 ( the raw 'console' screen you echoed to ) 切换到另一个屏幕(程序的标准输出所连接的普通终端)。

您的平台的 getche 文档怎么说?

关于c - getche 按 Enter 后清除屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8516542/

相关文章:

visual-studio - Visual Studio 11 "Target Framework"一直恢复到 4

c - 使用 malloc() 和 free() 的程序崩溃

c - C中给char ***分配内存

windows - shell 扩展会导致我的程序崩溃吗?

asp.net-mvc - 找不到类型或命名空间名称 'DbContext'

visual-studio - 在Visual Studio 2010中显示当前行号和列号

c - 选择系统调用不扫描超过 2 个描述符

c - 如何在 C 中迭代指向 char 数组的指针?

c++ - Mingw Linux编译环境如何安装BerkeleyDB

windows - 在不关注窗口的情况下启动应用程序和 cmd