99问答网
所有问题
C语言键盘内容读取
在C语言中,常用的键盘读取函数为scanf,但不能读取功能键,在C中,有没有一个函数能读取键盘所有按键,如果没有,如何构建?
举报该问题
推荐答案 推荐于2017-10-01
综观TC提供的键盘输入函数,以bioskey函数为最合适选择。
int bioskey(int cmd);
使用BIOS中断0x16执行各种键盘操作。参数cmd确定实际得操作。
bioskey的返回值由cmd决定:
0:低8位非0,返回在队列中等待的下一输入键的ascii字符或键盘的下一次按键输入的ascii字符。低8位为0,则高8位为扩展键盘码。
1:测试是否有可读的输入键,为0,则没有。Ctrl_break 返回0xffff(-1)。否则,返回下一个输入键。键值还保存,供下次cmd=0时bioskey调用返回。
2:请求当前换档键状态。状态值由下列值相或(or)得到:
位7 0x80 Insert ON
6 0x40 Caps ON
5 0x20 Numlock ON
4 0x10 Scroll Lock ON
3 0x08 ALT
2 0x04 CTRL
1 0x02 <- SHIFT
0 0x01 -> SHIFT
为了方便起见,我们首先定义一些常用功能键的键值。
#define ReturnKey 0x0d
#define ESC 0x1b
#define Back 0x08
#define LeftArrow 0x4b00
#define RightArrow 0x4d00
#define UpArrow 0x4800
#define DownArrow 0x5000
#define PageUp 0x4900
#define PageDown 0x5100
#define Home 0x4700
#define End 0x4f00
#define F1 0x3b00
#define F2 0x3c00
#define F3 0x3d00
#define F4 0x3e00
#define F5 0x3f00
#define F6 0x4000
#define F7 0x4100
#define F8 0x4200
#define F9 0x4300
#define F10 0x4400
int GetKey(void)
{
int tKey;
while(bioskey(1)==0)
;
tKey=bioskey(0);
if ((tKey & 0xff)!=0)
tKey=tKey & 0xff;
return tKey;
}
以上代码,可基本完成常用程序键盘读取操作。
但我们必须注意到,对于函数GetKey的定义中,bioskey函数的使用,我们只是对cmd=0,1的情况进行了处理,而对于cmd=2,也即换档键状态没有进行处理,因而诸如ctrl-home等等GetKey不能进行相应的接收,如果确实需要,须继续扩充GetKey函数。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://99.wendadaohang.com/zd/W7jWWWjzX.html
其他回答
第1个回答 2010-07-23
你可以用一下字符读取函数或字符串读取函数
字符读取 getchar();
字符串 gets();
注意书写格式
char a;
a=getchar(); //读取一个字符给变量a
putchar(a);//输出字符
char b[100];
gets(b);//读取字符串给数组b
puts(b);//输出字符串
2种读取方式不同,另如果同时多条读取需要用fflush(stdin)清空缓存
fflush(stdin);//可以先不写,先写是为了保证缓存可用
char a;
char b[100];
a=getchar();
putchar(a);
fflush(stdin);
gets(b);
puts(b);
第2个回答 2015-12-21
获取键盘内容例程:
#include "stdio.h"
int main(void){
char a,b;
scanf(" %c",&a);
scanf(" %c",&b);
printf("%c %c\n",a,b);
return 0;
}
第3个回答 2010-07-23
可以用bioskey函数来读取键盘的功能键!
第4个回答 2010-07-23
如果要用到箭头啊,功能键这些键的话,就用bioskey(0)这个函数
如
switch(bioskey(0))
{
case 0x4800:...
/*这里的0x4800是相应的键的扫描码,因为bioskey(0)返回的是键的扫描码,这个是哪个箭头的忘了*/
case ....
}
1
2
下一页
相似回答
编写一个
C语言
程序:从
键盘读入
一行文本,统计每个英文字母出现的次数_百 ...
答:
1、循环读取字符,直到换行为止
。对于每个字符,执行以下流程。2、判断是否为英文字母,即小写和大写两种。3、如果是英文字母,则统计个数。输入部分,可以存为数组,也可以每输入一个字符计算一次。二、参考代码:include <stdio.h>int main(){ int c; int cnt[52]={0}; while((c=get...
c语言
如何定义一个线性函数y=kx+b的系数k,b,从
键盘读取
这两个系数...
答:
float k,b,x,y;printf("请输入k,b:");scanf("%f%f",&k,&b);printf("请输入x:");scanf("%f",&x);y=k*x十b;printf("y=%f\n",y);
C语言
获取键值
答:
cmd = 2: 当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。函数名: bioskey 功 能: 直接使用BIOS服务的
键盘
接口 函数原型:int bioskey (int cmd) 说明:bioskey()的函数原型在bios.h中 bioskey()完成直接键盘操...
C语言
从
键盘读入EOF
的问题
答:
EOF
并不是一个具体的数据,而是表示流被正常终断的一个方式。比如你getchar()正常返回0~255之间 如果流中断了返回-1来表示EOF。标准输入流是不可能中断的,也就没有EOF 你可以用一个特殊的数据来通知程序停止。比如要求输入字母,就可以用数字来表示结束之类。
C语言键盘内容读取
答:
return tKey;} 以上代码,可基本完成常用程序
键盘读取
操作。但我们必须注意到,对于函数GetKey的定义中,bioskey函数的使用,我们只是对cmd=0,1的情况进行了处理,而对于cmd=2,也即换档键状态没有进行处理,因而诸如ctrl-home等等GetKey不能进行相应的接收,如果确实需要,须继续扩充GetKey函数。
c语言
数组如何实现从
键盘
上输入数组的个数
答:
scanf("%d",&a[i]);这里,我们
读取
一个整数并将其存储在数组a的第i个位置。通过这种方式,我们可以实现从
键盘
输入数组个数的功能,并将这些数存储在数组a中。以上就是如何使用
C语言
从键盘输入数组个数的方法。这种方法适用于各种场景,包括数据输入、测试程序等。需要注意的是,在实际编程过程中,最...
在
C语言
中如何实现用
键盘
输入一个字符串,并打印出来
答:
在
C语言
中实现用键盘输入字符串并打印的方法步骤如下:首先,需定义一个数组空间用于存放字符串,例如分配100个数组单元。接着,使用gets()函数
读取键盘
输入的字符串,调用格式为gets(字符数组名)。然后,应用puts()函数输出之前读取的字符串
内容
,使用方法为puts(字符数组名)。最后,运行程序,即可成功...
c语言
从
键盘
输入一行字符,分别统计其中数字字符,字母字符和其他字符...
答:
intmain(){ inta,b,
c
,ch;a=b=c=0;//计数器初始化为0.while((ch=getchar())!='\n')//循环
读取
字符,到换行结束。{ if(ch>='0' && ch<='9')//数字 a++;else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))//字母 b++;else//其它 c++;} printf("%d%d%d...
C语言读取
文件,实现
键盘
输入83行
内容
从Bin之后拼接其他字符串,需要拼 ...
答:
这种最好将文件全部
内容读取
出来 然后从83行Bin之后截为两半,拼接完两次(strcat)再拼接一次后半部分(strcat),写回文件
大家正在搜
c语言读取文件内容
C语言读取文件的某一行
c语言怎么读取文件
c语言读取一行
c语言怎样读取文件里的东西
c语言读取文件行
c语言怎么读取文件的第二行
c语言文件读取方式
c语言读取数据
相关问题
用C语言怎么从键盘上获取信息。
在C语言中如何实现用键盘输入一个字符串,并打印出来?
请问C语言怎样读取键盘的响应?
如何在C语言中读取键盘输入的快捷键?
以下C语言代码怎么从键盘中读取传输内容 应该怎么修改呢 求助...
C语言中如何执行 获得一个从键盘上输入的数字
从键盘怎么读入一个字符串,c语言中用gets
我想问一下C语言如何实现从键盘读入信息,需要什么头文件,函数...