大家好,关于c语言计时器程序代码很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何利用C语言编制计时器代码的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
本文目录
秒表计时器的代码\x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0astruct tm //定义时间结构体,包括时分秒和10毫秒 \x0d\x0a{ \x0d\x0aint hours,minutes,seconds; \x0d\x0aint hscd; \x0d\x0a}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间 \x0d\x0aint cnt; \x0d\x0a\x0d\x0aFILE* fout; \x0d\x0a//每次调用update函数,相当于时间过了10ms \x0d\x0avoid update(struct tm *t) \x0d\x0a{ \x0d\x0a\x0d\x0a(*t).hscd++; //10ms单位时间加1 \x0d\x0acnt++; \x0d\x0aif ((*t).hscd==100) //计时满1s,进位 \x0d\x0a{ \x0d\x0a (*t).hscd=0; \x0d\x0a (*t).seconds++; \x0d\x0a} \x0d\x0aif ((*t).seconds==60) //计时满一分,进位 \x0d\x0a{ \x0d\x0a (*t).seconds=0; \x0d\x0a (*t).minutes++; \x0d\x0a} \x0d\x0aif ((*t).minutes==60) //计时满一小时,进位 \x0d\x0a\x0d\x0a{ \x0d\x0a (*t).minutes=0; \x0d\x0a (*t).hours++; \x0d\x0a} \x0d\x0aif((*t).hours==24) (*t).hours=0; \x0d\x0a//delay(); \x0d\x0aSleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms \x0d\x0a} \x0d\x0avoid display(struct tm *t) \x0d\x0a{ \x0d\x0a//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间 \x0d\x0aprintf("%d:",(*t).hours); \x0d\x0aprintf("%d:",(*t).minutes); \x0d\x0aprintf("%d:",(*t).seconds); \x0d\x0aprintf("%d\r",(*t).hscd); \x0d\x0a//printf("Now, press ‘e’ key to stop the clock?"); \x0d\x0a} \x0d\x0avoid time_init() //初始化时间 \x0d\x0a{ \x0d\x0atime.hours=time.minutes=time.seconds=time.hscd=0; \x0d\x0a} \x0d\x0avoid get_total() //计算总时间 \x0d\x0a{ \x0d\x0atotal.hscd = cnt % 100; \x0d\x0acnt /= 100; \x0d\x0atotal.seconds = cnt % 60; \x0d\x0acnt /= 60; \x0d\x0atotal.minutes = cnt % 60; \x0d\x0acnt /= 60; \x0d\x0atotal.hours = cnt; \x0d\x0a} \x0d\x0aint main() \x0d\x0a{ \x0d\x0achar m; \x0d\x0atime_init(); \x0d\x0acnt = 0; \x0d\x0afout = fopen("timeout.txt","w"); \x0d\x0aprintf("按回车键开始计时!\n"); \x0d\x0awhile(1) \x0d\x0a{ \x0d\x0a m = getch(); \x0d\x0a if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环 \x0d\x0a printf("输入错误,仅能输入回车键!\n"); \x0d\x0a else \x0d\x0a break; \x0d\x0a} \x0d\x0aprintf("已经开始计时,但是你可以按回车键以分段计时!\n"); \x0d\x0awhile(1) \x0d\x0a{ \x0d\x0a if(kbhit()) //此处检查是否有键盘输入 \x0d\x0a { \x0d\x0a m=getch(); \x0d\x0a if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环 \x0d\x0a break; \x0d\x0a else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器 \x0d\x0a { \x0d\x0a tmp = time; //记录上一段计时器结果 \x0d\x0a fprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); //写入文件 \x0d\x0a time_init(); \x0d\x0a printf("\n"); \x0d\x0a } \x0d\x0a else \x0d\x0a { \x0d\x0a printf("输入错误,仅支持输入回车键或者空格键!\n"); \x0d\x0a } \x0d\x0a } \x0d\x0a update(&time); //更新计时器 \x0d\x0a display(&time); //显示计时器时间 \x0d\x0a} \x0d\x0atmp = time; //输出最后一次即使结果,写入文件 \x0d\x0afprintf(fout,"%d:%d:%d:%d\n",tmp.hours,tmp.minutes,tmp.seconds,tmp.hscd); \x0d\x0aget_total(); //计算总的时间,显示,并写入文件 \x0d\x0aprintf("\n总时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd); \x0d\x0afprintf(fout,"统计时间:%d:%d:%d:%d\n",total.hours,total.minutes,total.seconds,total.hscd); \x0d\x0afclose(fout); \x0d\x0aprintf("已经保存到当前目录下的timeout.txt文件中按任意键结束!"); \x0d\x0agetch(); \x0d\x0a\x0d\x0a}
#include 《iostream》
#include 《time.h》
using namespace std;
int main()
{
clock_t start = clock();
//do some process here
clock_t end = (clock() - start)/CLOCKS_PER_SEC;
cout《《"time comsumption is "《《end《《endl;
}
扩展资料
使用linux的系统设置计时器
#include 《sys/time.h》
int main()
{
timeval starttime,endtime;
gettimeofday(&starttime,0);
//do some process here
gettimeofday(&endtime,0);
double timeuse = 1000000*(endtime.tv_sec - starttime.tv_sec) + endtime.tv_usec - startime.tv_usec;
timeuse /=1000;//除以1000则进行毫秒计时,如果除以1000000则进行秒级别计时,如果除以1则进行微妙级别计时
}
timeval的结构如下:
strut timeval
{
long tv_sec; /* 秒数 */
long tv_usec; /* 微秒数 */
};
#include《stdio.h》#include《windows.h》int main(){int hour = 0, min = 0, sec = 0;while (1){Sleep(1000);//暂停1ssystem("cls");//清屏sec++;if (sec == 60){min++;sec = 0;}if (min == 60){hour++;min = 0;}if (hour == 24){hour = 0;}printf("%02d:%02d:%02d\n", hour, min, sec);//%02d输出长度为2,不足2前面补0}return 0;}
运行截图
这什么东西啊,也太乱了吧!用一个GetTickCount这个API函数;GetTickCount函数 函数功能:GetTickCount返回(retrieve)从操作系统启动到现在所经过(elapsed)的毫秒数,它的返回值是DWORD。 函数原型: DWORD GetTickCount(void); C/C++头文件:winbase.h windows程序设计中可以使用头文件windows.h程序示例 //代替time函数来初始化随机数生成器 #include《stdio.h》 #include《windows.h》 int main() { int i,k,r; for(i=0;i《10;i++) { srand(GetTickCount()); printf("\n"); for(k=0;k《5;k++) { r=rand(); printf("%d ",r); } } return 0; }注意事项 GetTickcount函数:它返回从操作系统启动到当前所经过的毫秒数,常常用来判断某个方法执行的时间,其函数原型是DWORD GetTickCount(void),返回值以32位的双字类型DWORD存储,因此可以存储的最大值是2-1 ms约为49.71天,因此若系统运行时间超过49.71天时,这个数就会归0,MSDN中也明确的提到了:"Retrieves the number of milliseconds that have elapsed since the system was started, up to 49.7 days."。因此,如果是编写服务器端程序,此处一定要万分注意,避免引起意外的状况。这个是从百度百科上贴过来的。
#include 《stdio.h》#include 《stdlib.h》#include 《time.h》#include 《windows.h》intmain(int argc, char **argv){ char buf; time_t t; while (1) { time(&t); //得到系统时间数 _strtime(buf);//将时间数转换成字符串 printf("%s\n", buf); Sleep(500);//休息0.5秒,不然运行过快,刚显示出来,就被清除了 system("cls");//如果想在同一位置显示,就必须把当前的显示信息清除掉 } return 0;}
#include 《stdio.h》#include 《time.h》int main(int argc, char *argv){ char button = 0; time_t start = 0, end = 0; while(1) { button = getchar(); if (’A’ == button) { if (0 == start) { start = time(NULL); printf("开始计时 %s\n", ctime(&start)); } else { printf("不能重复计时\n"); } } else if (’B’ == button) { if (0 == start) { printf("还未开始计时\n"); } else { end = time(NULL); printf("结束计时 %s\n", ctime(&end)); break; } } } return 0;}
#include\x0d\x0aclock_tstart,end;\x0d\x0a在开始计时的地方写:start=clock();\x0d\x0a在结束的地方写:end=clock();\x0d\x0a时间等于:t=(end-start)/CLOCKS_PER_SEC;\x0d\x0a单位是秒
如何利用C语言编制计时器代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于如何利用C语言编制计时器代码、如何利用C语言编制计时器代码的信息别忘了在本站进行查找哦。