C语言延时函数

C语言延时函数,第1张

C语言的延迟函数一般是利用无意义程序掘亮运行来洞纯控制时间从而达到延时的目的

举个例子判颤宽:

for(i=0i<xi++)

for(j=0j<120j++)

这是延时x毫秒的for循环语句。

值得注意的是记得最后的;一定得记得写。

您好 这个延时函数很不稳定的,没有固定的时间

如果您使用tc 您可以用sleep(微秒)来延时

使用vc的话有5种常用方式:

方式一:VC中的WM_TIMER消息映射能进行简单的时间控制。首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔。然后在应用程序中增加定时响应函数 OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的 *** 作。这种定时方法非常简单,可以实现一定的定时功能,但其定时功能如同Sleep()函数的延时功能一样,精度非常低,最小计时精度仅为30ms,CPU占用低,且定时器消息在多任务 *** 作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。只可以用来实现诸如位图的动态显示等对定时精度要求不高的情况。如示例工程中的Timer1。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

方式二:VC中使用sleep()函数实现延时,它的单位是ms,如延时2秒,用sleep(2000)。精度非简宽常低,最小计时精度仅为30ms,用sleep函数的不利处在于延时期间不能处理其他的消息,如果时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer2。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

方式三:利用COleDateTime类和COleDateTimeSpan类结合WINDOWS的消息处理过程来实现秒级延时。如示例工程中的Timer3和Timer3_1。以下是实现2秒的延时代码:

COleDateTime start_time = COleDateTime::GetCurrentTime()

COleDateTimeSpan end_time= COleDateTime::GetCurrentTime()-start_time

while(end_time.GetTotalSeconds()<end_time =" COleDateTime::GetCurrentTime()-start_time">

///////////纳大/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

方式四:在精度要求较高的情况下,VC中可以利用GetTickCount()函数,该函数的返回值是 DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。精度比WM_TIMER消息映射高,在较短的定时中其计时误差为15ms,在较长的定时中其计时误差较低,如果定时时间太长,就好象死机一样,CPU占用率非常高,只能用于要求不高的延时程序中。如示例工程中的Timer4和Timer4_1。下列代码可以实现50ms的精确定时:

DWORD dwStart = GetTickCount()

DWORD dwEnd = dwStart

do

{

dwEnd = GetTickCount()-dwStart

}while(dwEnd <50)

为使GetTickCount()函数在延时或定时期间能处理其他的消息,可以把代码改为:

DWORD dwStart = GetTickCount()

DWORD dwEnd = dwStart

do

{

MSG msg

GetMessage(&msg,NULL,0,0)

TranslateMessage(&msg)

DispatchMessage(&msg)

dwEnd = GetTickCount()-dwStart

}while(dwEnd <50)

虽然这样可以降低CPU的占有率,并在延时或定时期间也能处理其他的消息,但降低了延时或定时精度。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

方式五:与 GetTickCount()函数类似的多媒体定时器函数DWORD timeGetTime(void),该函数定时精度为ms级,返回从Windows启动开始经过的毫秒数。微软公司在其多媒体Windows中提供了精确定时器的底层API持,利用多媒体定时器可以很精确地读出系统的当前时间,并且能在非常精确的时间间隔内完成一个事件、函数或过程的调用。不同之处在于调用DWORD timeGetTime(void) 函数之前必须将 Winmm.lib 和 Mmsystem.h 添加到工程中,否则在编译时提示DWORD timeGetTime(void)函数未定义。由洞咐竖于使用该函数是通过查询的方式进行定时控制的,所以,应该建立定时循环来进行定时事件的控制。如示例工程中的Timer5和Timer5_1。

C语言中的两个函数

一个是 <windows.h>改坦郑 信手库下的 Sleep()

效果为当前进程等待 Sleep(x) 毫秒核颂

可以实现延时功能

另一个是 <time.h> 下的 time()

效果为返回当前时间,配合循环可以实现定时功能

以下是一个例子:

//刚写完

#include<stdio.h>

#include<windows.h>

#include<time.h>

int main()

{

printf("定时程序2秒后开启\n")

Sleep(2000)

printf("定时程序开启\n")

printf("当前时间戳是%s\n", time(NULL))

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12512997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存