我使用了以下代码:
#include <stdio.h>
int main()
{
char ch,a[5];
int j=0;
while((ch=getche())!='\n')
{
a[j]=ch;
j++;
}
printf("%c",a[2]);
return 0;
}
当我输入字符并在行尾按输入键时,闪光灯的位置会移动到屏幕的左上角,并且可以输入更多字符,这些字符似乎会覆盖预先存在的字符(但不是)。
使用ch=getchar()
而非getche()
结束循环并按预期显示值。我是否可以使用getche()
获得类似的输出?使用getche()
'\n'
不会显示输出。但是,使用其他一些字符代替'\n'
(例如n
)可以正常工作。
答案 0 :(得分:1)
根据键盘和stdin
存在差异,但getche()
获取密钥而不回显。当用户键入 Enter 时,un C-ified char可能是'\n'
或'\r'
。打印时,您将获得相应的换行或回车。由于 Enter 映射到键盘上的'\r'
,因此在通过getche()
提取时,请测试并打印'\n'
。通过getchar()
获取时,C会将 Enter 转换为'\n'
。
int ch = getche();
if (ch == '\r') c = '\n';
printf("%c", ch);
使用int ch
,因此代码可以检查EOF。