问题背景:
我想设计程序,可以让用户任意按键,按到可打印字符时存进数组,否则舍弃,检测到回车键结束输入
代码如下:
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main()
{
char temp[100] = { 0 };
char c = 0;
int i = 0;
int I = 0;
int a;
int A[100] = {};
c = getche();
while (c != '\r')
{
a = isprint(c);
A[I++] = a;
if (a)
temp[i++] = c;
else
{
temp[i++] = '*';
}
c = getche();
}
printf("\n");
for (int i = 0; i < 10; i++)
{
printf("%d ", A[i]);
}
printf("\n");
puts(temp);
return 0;
}
测试按键: F1,F2,3键,4,5
运行结果:
问题:
发现如果按到一些不会打印字符的键,如F1,F2等,例如getche()对F1能读两次,第一次的ASCLL码为0,第二次的不为0,而且是可打印字符的ASCLL码。为什么会出现这种问题,该怎么解决?