我正在试验 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/