這篇文章和大家分享如何用C語言寫一個「 能記錄多筆資料的計時器(Timer)」
開發環境
程式碼
timer - (ver.English).c
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define TRUE 1
#define FALSE 0
int hitAnyKey();
float recordTime();
float rounding(float);
void main()
{
int cnt;
int i;
float timer[cnt];
float totalTime = 0;
printf("Input the number of timers: ");
scanf("%d", &cnt);
if(cnt >= 1) // at least one timer
{
printf("Press any key to start first timer\n");
getch();
printf("Start timing...\n");
// 開始計時
for(i = 1; i <= cnt; i++)
{
printf("Start No.%d timer!(press any key to stop)\n", i);
timer[i] = recordTime();
totalTime += timer[i];
}
// Display the time of each timer
for(i = 1; i <= cnt; i++)
{
printf("No.%d timer: %.2f s\n", i, timer[i]);
}
}
printf("Total process time: %.2f s\n", totalTime);
printf("Press any key to exit . . .");
getch();
}
float recordTime()
{
int t = 0;
float crrentTime;
while(TRUE)
{
crrentTime = t++ / 100.0;
printf(" \r %.2f", crrentTime); // 利用 \r 歸位字元,讓時間始終顯示在同一位置
Sleep(10); // 10 ms = 0.01 s
if(hitAnyKey())
{
printf("\a\n"); // 發出聲音並且換行
break;
}
}
crrentTime = rounding(crrentTime);
return crrentTime;
}
// 是否有按任意鍵
int hitAnyKey()
{
if(kbhit() && getch())
{
return TRUE;
}
return FALSE;
}
// 四捨五入 取到 小數點第二位
float rounding(float num)
{
num = (int)(num * 100 + 0.5) / 100.0;
return num;
}
執行結果(examples):
在程式中輸入0
在程式中輸入2
參考資料:
sleep function in Windows, using C
如果這篇文章有幫助到你,想支持一下作者可以幫忙點擊側欄的「 Goolgle AdSense 」廣告 😄
如果你喜歡這篇文章可以點擊「分享」按鈕,來分享到你的網路社群
(以上文章內容如有謬誤,敬請不吝指教)