当前位置:首页 » 编程语言 » c语言判断按键
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言判断按键

发布时间: 2023-03-07 21:03:17

A. C程序怎样样判断连续两次按键

首先,连续两次按键不是C的功能(严格讲,C标准没有按键这个功能的)而是你的操作系统或平台的功能(如单片机和PC肯定不同)windwos下,1般编译器有1个kbhit()函数(VC,gcc,c++builder都有)它可判断是不是有键按下,这样就能够实现你的要求以下程序连续两次按键后退出#includeconio.hintmain(){while(kbhit()==0);getch();///按了1次while(kbhit()==0);getch();///按了2次return0;}固然,如果你是单片机或其它平台,kbhit()或许就要自己实现了

B. 如何在c语言中判断输入的是回车

ch=getchar(); //从键盘上输入一个字符

if(ch==' ") //判断ch是否是回车键

#include <stdio.h>

#include <string.h>

int main()

{

char meg[1024];

int i=0;

while(i<1024)

{

scanf("%c",meg+i);

if(meg[i]==10) break;

i++;

}

meg[i]='';

if(i==0) {

仅为回车键

(2)c语言判断按键扩展阅读:

在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。

C语言也将 34 种运算符规定了不同的结合性。大多数运算符结合方向是“自左至右”,即:先左后右,也叫“左结合性”,例如 a-b + c,表达式中有-和+两种运算符,且优先级相同,按先左后右结合方向,先围绕减号结合,执行 a-b 的运算,再围绕加号结合,完成运算(a-b) + c。

C. C语言如何实现判断2个键同时按下

如果是操作系统下,判断按键,需要调用相关操作系统的相关函数。

如果是单片机矩阵键盘,需要自己写循环延时判断按钮的电平状态。

我以window为例子,写了简单的判断W和A键同时按下的程序。

两个按键先后按下,之间存在间隔,我定义的常量,默认10毫秒,你需要自己改。

#include<stdio.h>
#include<windows.h>
#definedelayT10//两个按键先后按下的最大间隔,毫秒
intkeyDU(charkey);//判断按键是否按下,是返回1,否返回0
intmain()
{
intkw=0,kwl=0,ka=0,kal=0;

while(1)
{
kw=keyDU('W');
ka=keyDU('A');
if((kw==1&&kwl!=kw)||(ka==1&&kal!=ka))
{
while(delayT)//当其中一个键按下,每一毫秒检查一次两个键有没有同时按下
{
kw=keyDU('W');
ka=keyDU('A');
if(kw==0)
kwl=kw;
if(ka==0)
kal=ka;
if(kw==1&&kwl!=kw&&ka==1&&kal!=ka)
{
printf("W、A键同时被按下 ");
kwl=kw;
kal=ka;
break;
}
Sleep(1);
}
}

if(kw==0)
kwl=kw;
if(ka==0)
kal=ka;
}
return0;
}
intkeyDU(charkey)//判断按键是否按下,是返回1,否返回0
{
intdown=0;
down=GetKeyState(key);
if(down<0)
return1;
if(down>0)
return0;
return-1;
}

D. C语言 如何在一段时间内检测键盘是否按下

#include <bios.h>
#include <stdio.h>
main()
{
int key;
for(;;)
{
if (bioskey(1)) /*有键按下,读取键值*/
key=bioskey(0);
else /*无键按下,返回0*/
key=0;
switch(key)
{case 0: ...../*无按键,执行该操作*/
case 0xXXXXH:..../*不同键值,做不同处理*/
。。。。。
}
}
}

该程序段功能:
判断是否有键按下,若有进行不同操作,若无进行其他操作。

相关原理:
函数名: bioskey
功 能: 直接使用BIOS服务的键盘接口
函数原型:int bioskey (int cmd)
说明:bioskey()的函数原型在bios.h中
bioskey()完成直接键盘操作,cmd的值决定执行什么操作。

cmd = 1:
当cmd是1,bioskey()查询是否按下一个键,若按下一个键则返回非零值,否则返回0。

键盘有按键时,会把键值(扫描码)存入缓冲区,当需要判断是否有键按下时,扫描缓冲区,为空则无键按下,不为空则有键按下。注意:该功能并不清空缓冲区。

cmd = 0:
当cmd是0,bioskey()返回键盘键入的值。它返回一个16位的二进制数,包括两个不同的值。当按下一个普通键时,它的低8位数存放该字符的ASCII码,高8位存放该键的扫描码;对于特殊键(如方向键、F1~F12等等),低8位为0,高8位字节存放该键的扫描码。

其操作步骤为:
1.检测缓冲区是否有数据;
2.没有则继续第一步;
3.读取缓冲区第一个单元中的键盘输入
4.读取的扫描码
5.将已读取的键盘输入从缓冲区删除

E. C语言如何检测是否按下功能键

有独立键盘和距阵键盘的独立键盘的很简单我就不写了距阵的我给你写一个//键盘扫描ucharKeys_Scan(){ucharsCode,kCode,i,k;//低4位置0,放入4行P1=0xf0;//若高4位出现0,则有键按下if((P1&0xf0)!=0xf0){DelayMS(2);if((P1&0xf0)!=0xf0){sCode=0xfe;//行扫描码初值for(k=0;k<4;k++)//对4行分别进行扫描{P1=sCode;if((P1&0xf0)!=0xf0){kCode=~P1;for(i=0;i<16;i++)//查表得到按键序号并返回if(kCode==KeyCodeTable[i])return(i);}elsesCode=_crol_(sCode,1);}}}return(-1);