Sleep函數(shù):功 能: 執(zhí)行掛起一段時間 用 法: unsigned sleep(unsigned seconds); 注意: 在VC中使用帶上頭文件#include windows.h 在VC中,Sleep中的第一個英文字符為大寫的"S" ,在標(biāo)準(zhǔn)C中是sleep, 不要大寫,簡單的說VC用Sleep, 別的一律使用sleep 在VC中,Sleep()里面的單位,是以毫秒為單位,所以如果想讓函數(shù)滯留1秒的話,應(yīng)該是Sleep(1000); 在Linux下,sleep()里面的單位是秒,而不是毫秒。 示例: #include windows.h int main() { int a; a=1000; Sleep(a); return 0; } usleep函數(shù):功能: usleep功能把進程掛起一段時間, 單位是微秒us(百萬分之一秒)。 delay函數(shù): 功 能: 將程序的執(zhí)行暫停一段時間,單位是毫秒ms(千分之一秒) 用 法: void delay(unsigned milliseconds); 示例: #includedos.h int main(void) { sound(440); delay(500); nosound(); return 0; }delay()是循環(huán)等待,該進程還在運行,占用處理器。sleep()不同,它會被掛起,把處理器讓給其他的進程。
創(chuàng)新互聯(lián)是一家專業(yè)提供萊州企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都做網(wǎng)站、H5建站、小程序制作等業(yè)務(wù)。10年已為萊州眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。
1)首先要知道你用的是什么C語言?
2)其次要知道你的編程環(huán)境:是在DOS下編程?還是在Windows下編程?還是為嵌入式系統(tǒng)編程?
3)第三步才是找對應(yīng)的C語言環(huán)境下有沒有延時函數(shù)?
4)如果是單線程程序,沒有可用函數(shù)庫,就編個循環(huán),在開始時去取系統(tǒng)時間(時間以毫秒表示),然后在每次循環(huán)中取當(dāng)前時間,如果前后時間差達到1秒,則退出循環(huán),這個精度一般不高。
如果更準(zhǔn)確一點,通過時間中斷器,在時間達到1秒后產(chǎn)生中斷,這個方法精度好一些。
1、用sleep延時刷新并獲取系統(tǒng)時間來顯示。
2、例程:
#includegraphics.h?
#includemath.h?
#includedos.h?
#define?PI?3.1415926?
//屏幕中心的坐標(biāo)(640X480模式下)
#define?mid_x?320?
#define?mid_y?240?
int?main()?
{?int?graphdriver=DETECT,graphmode;?
int?end_x,end_y;?
struct?time?curtime;?
float?th_hour,th_min,th_sec;?
initgraph(graphdriver,graphmode,"C:\\TC2");?//初始化VGA屏幕模式
setbkcolor(BLACK);?//使用黑色的背景色
while(!kbhit(0))?//若有鍵盤輸入,則跳出,即是結(jié)束程序
{?setcolor(GREEN);?//把畫筆設(shè)為綠色
circle(mid_x,mid_y,180);?//鐘的外圓
circle(mid_x,mid_y,150);?//鐘的內(nèi)圓
circle(mid_x,mid_y,1);?//畫出鐘的圓心
gettime(curtime);?//取得系統(tǒng)當(dāng)前時間
th_sec=(float)curtime.ti_sec*0.1047197551;?//把秒針的角度化為弧度,為以后繪制時方便,下同
th_min=(float)curtime.ti_min*0.1047197551+th_sec/60.0;?//分針的弧度
th_hour=(float)curtime.ti_hour*0.5235987755+th_min/12.0;?//時度的弧度,注意整時是12等分的,所時乘的是3.14/180*5
//計算出時針的尾的坐標(biāo)(時針長70)
end_x=mid_x+70*sin(th_hour);?
end_y=mid_y-70*cos(th_hour);?
setcolor(RED);?
line(mid_x,mid_y,end_x,end_y);?//用紅色線畫出時針
//計算出分針坐標(biāo)(分針長110)
end_x=mid_x+110*sin(th_min);?
end_y=mid_y-110*cos(th_min);?
setcolor(RED);?
line(mid_x,mid_y,end_x,end_y);?//用紅色畫出分針
end_x=mid_x+140*sin(th_sec);?
end_y=mid_y-140*cos(th_sec);?
setcolor(RED);?
line(mid_x,mid_y,end_x,end_y);?//同上,畫出秒針,長為140
//畫出鐘盤上的刻度,刻度長20
line(140,240,160,240);?//9點對應(yīng)的大刻度
line(320,60,320,80);?//12點對應(yīng)的大刻度
line(500,240,480,240);?//3點的刻度
line(320,420,320,400);?//6點的刻度
line(410,395.7,400,378.4);?//5點
line(475.7,330,458.4,320);?//4點
line(475.7,150,458.4,160);?//2點
line(410,84.3,400,101.6);?//1點
line(230,84.3,240,101.6);?//11點
line(164.3,150,181.6,160);?//10點
line(164.3,330,181.6,320);?//8點
line(230,395.7,240,378.4);?//7點
sleep(BLUE);?//這里應(yīng)該是打錯,停止一秒,應(yīng)為sleep(1000)
cleardevice();?//清除屏幕上的顯示
}?
closegraph();?//關(guān)閉VGA屏幕,即返回文本方式
return?0;?
}
下面是delay
函數(shù)原型:
原型:
void
Delay(unsigned
int
nDelay)
{
unsigned
int
i,j,k;
for
(
i=0;inDelay;i++
)
for
(
j=0;j6144;j++
)
k++;
}
用法:#include
system.h
功能:短暫延時
說明:延時msec*4毫秒所以,delay的延遲時間是和你的cpu時鐘周期相關(guān)的
可以用以下兩種方式
1.sleep(n);n是以毫秒為單位的;
2.delay(n);n是以毫秒為單位的;
例如延遲一秒是sleep(1)或者是delay(1000);