C++怎么实现:不输入任何字符(键盘无操作)时自动跳过程序,有输入执行.类似while(..){..}
3个回答
展开全部
用kbhit检查按键, 然后再取得按键, 没有按键就不用等待按键了, 另外像F1,上下键一类的好像是2个码的, 所以多取得1次
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main()
{
clock_t t;
const int timeout = 4000; // clock() 返回毫秒
int key,count,i = 0;
while(1)
{
t = clock() + timeout;
key = 0;
while(t>clock())
{
count = (t-clock())/1000;
printf("\r%d",count);
if(kbhit()) //没有的话, 试试_kbhit()
{
_getch(); //vc6没有getch, 只有_getch, 有的编译器这2还有不同
if(kbhit())_getch();
key = 1;
break;
}
}
printf("\n");
if(key)
{
printf("code %d\n",i++);
//...
}else{
printf("time out\n");
//
}
}
return 0;
}
#include <stdio.h>
#include <conio.h>
#include <time.h>
int main()
{
clock_t t;
const int timeout = 4000; // clock() 返回毫秒
int key,count,i = 0;
while(1)
{
t = clock() + timeout;
key = 0;
while(t>clock())
{
count = (t-clock())/1000;
printf("\r%d",count);
if(kbhit()) //没有的话, 试试_kbhit()
{
_getch(); //vc6没有getch, 只有_getch, 有的编译器这2还有不同
if(kbhit())_getch();
key = 1;
break;
}
}
printf("\n");
if(key)
{
printf("code %d\n",i++);
//...
}else{
printf("time out\n");
//
}
}
return 0;
}
展开全部
我的思路是用 CreateThread 创造两个线程,一个线程 waitfor 用来计时,一个线程 input 用来等待输入,输入的变量可以弄成全局变量。当 waitfor 线程发现时间已经经过指定秒数的时候,就关闭 input 线程,继续执行自己的内容;当 input 线程得到输入的时候,就关闭 waitfor 线程,执行自己的代码。
这中间涉及到许多 API,你可以自己查一下。
这中间涉及到许多 API,你可以自己查一下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
无操作是指直接按回车跳过么?用getch()函数。
不可能不等待输入啊。否则只要你不是一直按着键盘,系统自然会认为你永远无输入。
不可能不等待输入啊。否则只要你不是一直按着键盘,系统自然会认为你永远无输入。
追问
我知道如果回车就判断getchar()是否为'\n'就行,但我不是这个意思..
while(1)//大循环
{
while(...) //键盘有输入执行代码段1,没有继续2.
{
//program code //1
}
//program ///2
}
追答
没有输入的话你肯定得有一个时间参量来判断吧。比如10s无操作跳出循环。在while的判断框里引入一个计时函数吧。具体怎么写我忘记了。。。记得有一个库的可以引入系统时间的。可以百科一下。。。
LS说的我也比较同意。这样的话还是双线程来写。一条是代码2.另一条代码1用触发式,有输入触发代码1.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询