C语言如何在子线程中等待输入的同时(scanf或者getchar等等之类的输入),不阻塞其他线程去进行输出??

本人在做一个简易的贪食蛇练练手,要求在等待用户键盘输入方向的同时还能一直动,即等待输入的同时不阻塞其他线程输出,网上看了一些,目前有用select的,但是不太懂,有人有其... 本人在做一个简易的贪食蛇练练手 ,要求在等待用户键盘输入方向的同时还能一直动,即等待输入的同时不阻塞其他线程输出,网上看了一些,目前有用select的,但是不太懂,有人有其他方法或者讲一下select的用法吗??感激不尽!!! 展开
 我来答
百度网友2018359
2017-09-15 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1447万
展开全部

要用_kbhit()函数, 非阻塞

//direct代表方向: 0-向右, 1-向下, 2-向左, 3-向上
while(1)
{
if(_kbhit())   //如果按下的是方向键或功能键, _getch()要调用两次,第一次返回0XE0或0 
{
c=_getch();   //上: 72 下:80  左:75  右:77 
if(c==0XE0 || c==0) c=_getch();
if(c==72 && (direct!=1 || direct!=3))
{
direct=3;
}
else if(c==80 && (direct!=1 || direct!=3))
{
direct=1;
}
else if(c==75 && (direct!=0 || direct!=2))
{
direct=2;
}
else if(c==77 && (direct!=0 || direct!=2))
{
direct=0;
}
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式