專門開一個線程負責在屏幕上顯示倒計時不就可以了.
江陵ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
while(
i
)
{
printf(
"時間還有:%d秒",
i
);
i--;
}
1、C語言中實現(xiàn)精確計時,參考代碼如下:
ANSIC: ftime()
struct timeb {
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
};
2、另外,還有就是更精確定計時,需要CPU的支持,具體情況,可以參考MSDN。
LARGE_INTEGER frequency = {0};
LARGE_INTEGER now = {0};
LARGE_INTEGER end = {0};
QueryPerformanceFrequency(frequency);
while (QueryPerformanceCounter(now) ((now.QuadPart - end.QuadPart) 0))
{
Sleep(0);
}
tdio.h
#include conio.h
#include windows.h
#include stdlib.h
struct tm //定義時間結(jié)構(gòu)體,包括時分秒和10毫秒
{
int hours,minutes,seconds;
int hscd;
}time,tmp,total; //time用以計時顯示,tmp用以存儲上一階段時間,total記總時間
int cnt;
FILE* fout;
//每次調(diào)用update函數(shù),相當于時間過了10ms
void update(struct tm *t)
{
(*t).hscd++; //10ms單位時間加1
cnt++;
if ((*t).hscd==100) //計時滿1s,進位
{
(*t).hscd=0;
(*t).seconds++;
}
if ((*t).seconds==60) //計時滿一分,進位
{
(*t).seconds=0;
(*t).minutes++;
}
if ((*t).minutes==60) //計時滿一小時,進位
{
(*t).minutes=0;
(*t).hours++;
}
if((*t).hours==24) (*t).hours=0;
//delay();
Sleep(10); //Sleep是windows提供的函數(shù),作用是暫停程序,單位毫秒,所以此處暫停10ms
}
void display(struct tm *t)
{
//此處輸出計時結(jié)果,\r為回車不換行,既一直在同一行更新時間
printf("%d:",(*t).hours);
printf("%d:",(*t).minutes);
printf("%d:",(*t).seconds);
printf("%d\r",(*t).hscd);
//printf("Now, press ‘e’ key to stop the clock…");
}
void time_init() //初始化時間
{
time.hours=time.minutes=time.seconds=time.hscd=0;
}
void get_total() //計算總時間
{
total.hscd = cnt % 100;
cnt /= 100;
total.seconds = cnt % 60;
cnt /= 60;
total.minutes = cnt % 60;
cnt /= 60;
total.hours = cnt;
}
int main()
{
char m;
time_init();
cnt = 0;
fout = fopen("timeout.txt","w");
printf("按回車鍵開始計時!\n");
while(1)
{
m = getch();
if(m != ‘\r’) //讀入一個輸入,如果是回車,那么跳出次循環(huán)
printf("輸入錯誤,僅能輸入回車鍵!\n");
else
break;
}
printf("已經(jīng)開始計時,但是你可以按回車鍵以分段計時!\n");
while(1)
{
if(kbhit()) //此處檢查是否有鍵盤輸入
{
m=getch();
if(m == ‘\r’) //如果等于回車,那么計時結(jié)束,跳出循環(huán)
break;
else if(m == ‘ ‘) //如果等于空格,顯示此次計時,初始化計時器
{
tmp = time; //記錄上一段計時器結(jié)果
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //寫入文件
time_init();
printf("\n");
}
else
{
printf("輸入錯誤,僅支持輸入回車鍵或者空格鍵!\n");
}
}
update(time); //更新計時器
display(time); //顯示計時器時間
}
tmp = time; //輸出最后一次即使結(jié)果,寫入文件
fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd);
get_total(); //計算總的時間,顯示,并寫入文件
printf("\n總時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fprintf(fout,"統(tǒng)計時間:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd);
fclose(fout);
printf("已經(jīng)保存到當前目錄下的timeout.txt文件中按任意鍵結(jié)束!");
getch();
}
另外,站長團上有產(chǎn)品團購,便宜有保證