C语言如何使用键盘按键中止程序
��如题,要用到一个键盘事件,如果不按键,则程序会自己执行下去,如果当使用者按下某个键(如N键)时,程序立即停止当前的运行并转到其他的功能。这...
��如题,要用到一个键盘事件,如果不按键,则程序会自己执行下去,如果当使用者按下某个键(如N键)时,程序立即停止当前的运行并转到其他的功能。这样的功能该如何实现?C语言里有没有这样的函数?注意是C,不是C++,有的话最好给一下具体代码,谢谢!
不是单片机,就是普通的Windows下的C程序
能不能给出具体的代码示范一下?我对这方面还不是很懂,谢谢了 展开
不是单片机,就是普通的Windows下的C程序
能不能给出具体的代码示范一下?我对这方面还不是很懂,谢谢了 展开
4个回答
展开全部
呵呵,这倒是有个函数的!!!
kbhit(),这个函数是你可以随便按一个按键就是1,如果你没有按下任何的按键,那就是0;所以就可以把这个函数用在某个循环上面,比如:
while(!kbhit())
{......
.....
...
}
当你不按按键的时候,kbhit()函数就是0,!kbhit()就是1;所以就一直循环下去,直到你按下按键的时候kbhit()就为1了,!kbhit()就为0了;循环就结束了,但这必须是你按键的时候不是给某个输入函数输入!!!
还是给你个例子吧,下面是一个在TC中获取系统时间的程序,直到你按下按键就不再更新时间了!!!
#include <stdio.h>
#include <bios.h>
#include <time.h>
#include <conio.h>
int main()
{struct tm *aa;
int year,month,days,sec,min,hour,tian,xingqi;
long bios_time,t1;
while(!kbhit())
{
bios_time = biostime(0, 0L);
sec=(long)(bios_time / CLK_TCK)%60;
min=(long)(bios_time / CLK_TCK / 60)%60;
hour=(long)(bios_time/ CLK_TCK / 3600);
time(&t1);
aa=gmtime(&t1);
year=aa->tm_year+1900;
month=aa->tm_mon+1;
days=aa->tm_mday;
tian=aa->tm_yday+1;
xingqi=(aa->tm_wday)%7;
gotoxy(5,6);
printf("%d/%.2d/%.2d %.2d:%.2d:%.2d\t xing qi %d\t\t ben nian di %d tian\n",year,month,days,hour,min,sec,xingqi,tian);
}
getch();
}
kbhit(),这个函数是你可以随便按一个按键就是1,如果你没有按下任何的按键,那就是0;所以就可以把这个函数用在某个循环上面,比如:
while(!kbhit())
{......
.....
...
}
当你不按按键的时候,kbhit()函数就是0,!kbhit()就是1;所以就一直循环下去,直到你按下按键的时候kbhit()就为1了,!kbhit()就为0了;循环就结束了,但这必须是你按键的时候不是给某个输入函数输入!!!
还是给你个例子吧,下面是一个在TC中获取系统时间的程序,直到你按下按键就不再更新时间了!!!
#include <stdio.h>
#include <bios.h>
#include <time.h>
#include <conio.h>
int main()
{struct tm *aa;
int year,month,days,sec,min,hour,tian,xingqi;
long bios_time,t1;
while(!kbhit())
{
bios_time = biostime(0, 0L);
sec=(long)(bios_time / CLK_TCK)%60;
min=(long)(bios_time / CLK_TCK / 60)%60;
hour=(long)(bios_time/ CLK_TCK / 3600);
time(&t1);
aa=gmtime(&t1);
year=aa->tm_year+1900;
month=aa->tm_mon+1;
days=aa->tm_mday;
tian=aa->tm_yday+1;
xingqi=(aa->tm_wday)%7;
gotoxy(5,6);
printf("%d/%.2d/%.2d %.2d:%.2d:%.2d\t xing qi %d\t\t ben nian di %d tian\n",year,month,days,hour,min,sec,xingqi,tian);
}
getch();
}
展开全部
程序正常走,重新起一个线程,监听键盘,当收到想要的键值时候,通知主线程来完成工作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机的C语言么?先定义端口。比如说定义P0.0口为key
if(key==0)
{
while(!key);
}
if(key==0)
{
while(!key);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要用到多线程,主线程进行业务处理,附线程循环接收外设输入
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |