c语言sleep语句键盘延时问题
c语言中使用sleep语句后在这期间如果快速不停的从键盘输入,就会导致必须要等他结算完后才能响应其他按键,怎么解决? 还有我在循环里使用
getch()捕捉空格键然后执行下一步操作,但是偶尔按键会没有用,只有重新打开,怎么办?
首先,一个概念,标准的C没有sleep函数,c语言是面向硬件(低层)开发的语言,它只有标准的输入/输出,文件操作,数学函数等,没有图形,没有与系统有关的函数
它的其它函功能都是基于系统或调用平台的
如sleep,linux平台下有,windows下只有Sleep,单片机的,没有
其次,无论linux的还是windows的S(s)leep,它都是独占线程的函数,也就是执行它时,程序会等侍它结束,它的用法就是这样的
你若要既能定时,又可以执行其它命令,那就要用多线程了(估计暂时超出你的认知了)
如以下程序
#include <windows.h>
#include <stdio.h>
static BOOL bExitApp = FALSE;
const UINT uiTimerID = 10;
VOID CALLBACK FooTimerFun( HWND h, UINT u1, UINT u2 , Dword d )
{
static int count=120; //120秒,2分种
if (count==0)
{
printf("时间到!!!
");
bExitApp = TRUE;
return;
}
if (count%10==0 || count<10) //10秒一输出
{
printf("还有%d秒
",count);
}
count--;
}
int main()
{
MSG msgFoo;
SetTimer( NULL , uiTimerID , 1000, FooTimerFun ); //1秒一次
while( !bExitApp && GetMessage( &msgFoo , NULL , 0 , 0 ) )
{
TranslateMessage( &msgFoo );
DispatchMessage( &msgFoo );
}
KillTimer( NULL , uiTimerID );
return 0;
}