使用要帶上頭文件:
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)伊州,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
#include windows.h
Sleep函數(shù):
功 能: 執(zhí)行掛起一段時間
用 法: unsigned sleep(unsigned seconds);
注意:
1.在VC中使用帶上頭文件#include windows.h,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include unistd.h
2.在VC中,Sleep中的第一個英文字符為大寫的"S" ,在linux下不要大寫,在標(biāo)準(zhǔn)C中是sleep, 不要大寫,簡單的說VC用Sleep, 別的一律使用sleep。
3.在VC中,Sleep()里面的單位,是以毫秒為單位,所以如果想讓函數(shù)滯留1秒的話,應(yīng)該是Sleep(1000); 在Linux下,sleep()里面的單位是秒,而不是毫秒。
示例:
#includestdio.h
#include windows.h
int main()
{
int a=100;?
Sleep(3000);
printf("%d",a);
return 0;
}
usleep函數(shù):
功能: usleep功能把進(jìn)程掛起一段時間, 單位是微秒us(百萬分之一秒)。
語法: void usleep(int micro_seconds);
返回值: 無
注意:這個函數(shù)不能工作在 Windows 操作系統(tǒng)中。
usleep() 與sleep()類似,用于延遲掛起進(jìn)程。進(jìn)程被掛起放到reday queue。只是一般情況下,延遲時間數(shù)量級是秒的時候,盡可能使用sleep()函數(shù)。且此函數(shù)已被廢除,可使用nanosleep?!?/p>
如果延遲時間為幾十毫秒,或者更小,盡可能使用usleep()函數(shù)。這樣才能最佳的利用CPU時間。
delay函數(shù):
功 能: 將程序的執(zhí)行暫停一段時間,單位是毫秒ms(千分之一秒)
用 法: void delay(unsigned milliseconds);
示例:
#includedos.h
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
delay()是循環(huán)等待,該進(jìn)程還在運(yùn)行,占用處理器。
sleep()不同,它會被掛起,把處理器讓給其他的進(jìn)程。
嗯,是這樣的,不過return只能退出當(dāng)前函數(shù),如果多個函數(shù)嵌套就不行了,要想整個退出用exit
例如:
fun1(){
return;
printf("fun1") ;
}
fun2(){
fun1();
printf("fun2") ;
}
main(){
fun2();
}
此時main函數(shù)調(diào)用fun2,然后fun2調(diào)用fun1,fun1直接return了,fun1沒有打印,但是fun2打印了,如果想不打印fun2,把fun1里面的return改為exit就好了
那太多了,可以編成大大的一本書。等待用戶從鍵盤輸入的函數(shù)是極個別的幾個,如scanf、getchar、gets……等。
sleep()函數(shù)大概只能精確到50ms左右,你用sleep(10)是肯定不行的,如果你要精確的定時的話可以使用QueryPerformanceFrequency()函數(shù),用法為:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(litmp);
dfFreq = (double)litmp.QuadPart;// 獲得計數(shù)器的時鐘頻率
QueryPerformanceCounter(litmp);
QPart1 = litmp.QuadPart;// 獲得初始值
do
{
QueryPerformanceCounter(litmp);
QPart2 = litmp.QuadPart;//獲得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 獲得對應(yīng)的時間值,單位為秒
}while(dfTim0.001);
其定時誤差不超過1微秒,精度與CPU等機(jī)器配置有關(guān)。
×××××××××××××××××××××××××
sleep()函數(shù)的中等待時間是以毫秒計算的,所以等待1秒就是sleep(1000),如果要讓等待時間小于一秒,那么就讓傳入的參數(shù)小于1000就行了.
比如,等待0.1秒:
sleep(100);
程序之間的通訊,應(yīng)當(dāng)有
結(jié)束時
的“握手”信號。收到握手。輸入結(jié)束。
不等待輸入,實(shí)際上有一個等待過程,例如等待1毫秒,1毫秒時段中沒有輸入事件發(fā)生,就轉(zhuǎn)向去做別的事,
事件發(fā)生,則處理。
視窗程序,就是用
事件驅(qū)動
。
可以手動在想要停下來的地方加入暫停功能的函數(shù)。一般有如下幾種實(shí)現(xiàn)方式:
1 通過getch函數(shù)。
在要暫停的位置,加入getch()調(diào)用,系統(tǒng)會暫停程序運(yùn)行,直到終端輸入一個字符為止。
2 對于部分平臺,不支持getch函數(shù)的,可以通過getchar()函數(shù),實(shí)現(xiàn)類似功能。
由于getchar是讀緩沖區(qū),與getch直接讀鍵盤輸入有所不同,所以為了避免干擾,在getchar之前需要調(diào)用fflush(stdin);來清空緩沖區(qū)。
3 使用system函數(shù)。
system函數(shù)功能為調(diào)用shell命令,而系統(tǒng)中的pause命令可以實(shí)現(xiàn)暫停功能,所以通過調(diào)用
system("pause");
可以實(shí)現(xiàn)暫停執(zhí)行的效果。