当前位置: 代码迷 >> C语言 >> 我刚学C碰到一个问题
  详细解决方案

我刚学C碰到一个问题

热度:130   发布时间:2007-09-11 21:07:45.0
我刚学C碰到一个问题
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
void main()
{
int i;
int key,key2;
key = getchar();
printf("\nkey value = %02x ",key);
if (key == 0x001b) {printf("ESC key"); exit(0);};
if (key>0) {
key = getchar();
switch (key) {
case 0x003b: printf("F1 key");break;
case 0x003c: printf("F2 key");break;
case 0x003d: printf("F3 key");break;
case 0x003e: printf("F4 key");break;
case 0x003f: printf("F5 key");break;
case 0x0040: printf("F6 key");break;
case 0x0041: printf("F7 key");break;
default: break;
};
};
exit(0);
}
用VC6.0第一个key = getchar(); 能用键盘输入值,第二个key = getchar(); 怎么不能用键盘输入了呢??
搜索更多相关的解决方案: include  

----------------解决方案--------------------------------------------------------
if (key>0) {
getchar();
key = getchar();

这样试试 ````如果可以了```那就键盘缓冲的问题````


----------------解决方案--------------------------------------------------------

楼上说得对,由于第一个key = getchar(); 输入时,按回车键,
回车符还暂时留在输入流中,
当第二个key = getchar(); 时,它所得到是一个回车符(ASC为10)
int key,key2;
key = getchar();
printf("\nkey value = %02x ",key);
if (key == 0x001b) {printf("ESC key"); exit(0);};
if (key>0) {
key = getchar();
printf("\n%d\n",key);/*测试一下,key是不是为10?*/
switch (key) {
...


----------------解决方案--------------------------------------------------------
  相关解决方案