C语言如何使用键盘按键中止程序

��如题,要用到一个键盘事件,如果不按键,则程序会自己执行下去,如果当使用者按下某个键(如N键)时,程序立即停止当前的运行并转到其他的功能。这... ��如题,要用到一个键盘事件,如果不按键,则程序会自己执行下去,如果当使用者按下某个键(如N键)时,程序立即停止当前的运行并转到其他的功能。这样的功能该如何实现?C语言里有没有这样的函数?注意是C,不是C++,有的话最好给一下具体代码,谢谢!
不是单片机,就是普通的Windows下的C程序
能不能给出具体的代码示范一下?我对这方面还不是很懂,谢谢了
展开
 我来答
tangjingtai
2010-08-03 · TA获得超过102个赞
知道答主
回答量:43
采纳率:0%
帮助的人:41.5万
展开全部
呵呵,这倒是有个函数的!!!
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();
}
百度网友f888f21
2010-08-03 · TA获得超过162个赞
知道小有建树答主
回答量:560
采纳率:0%
帮助的人:352万
展开全部
程序正常走,重新起一个线程,监听键盘,当收到想要的键值时候,通知主线程来完成工作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_緈鍢隨風
2010-08-03 · TA获得超过707个赞
知道小有建树答主
回答量:620
采纳率:0%
帮助的人:233万
展开全部
单片机的C语言么?先定义端口。比如说定义P0.0口为key
if(key==0)


while(!key);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d3e418b2c
2010-08-03 · TA获得超过2195个赞
知道大有可为答主
回答量:1361
采纳率:0%
帮助的人:1681万
展开全部
需要用到多线程,主线程进行业务处理,附线程循环接收外设输入
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式