c语言sleep语句键盘延时问题 - 爱问答

(爱问答)

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;
}


相关标签:c语言

下一篇:笔记本电脑win10系统,音频出现红叉,提示未安装任何音频输出设备,且驱动已经更新到最新,还无法解决

上一篇:照片,微信照片打印出来灰底,太难看,请问有什么好方法,我用的是word,

热门标签:
excel 网盘 破解 word dll
最新更新:
微软重新评估新的Outlook的使用时机 联想推出搭载联发科Helio G80芯片组的Tab M9平板 英特尔创新大赛时间确定! 微软Edge浏览器在稳定渠道中推出Workspaces功能 英伟达RTX4060TiGPU推出MaxSun动漫主题! 谷歌地图为用户提供了街景服务! GameSir 在T4 Kaleid中推出了一款出色的控制器! 微软开始在Windows 11 中测试其画图应用程序的新深色模式! LG电子推出全球首款无线OLED电视 英伟达人工智能芯片崭露头角! Steam Deck可以玩什么游戏-Steam Deck价格限时优惠 雷蛇推出CobraPro鼠标 Kindle电子阅读器可以访问谷歌商店吗 Windows10如何加入组策略 window10图片查看器怎么没有了?