
使用time()函数。它定义在头文件timeh中
具体使用方法如下:
time_t a,b; //time_t是表示时间的结构体,你可以在timeh中找到它的原型。
a=time(NULL); //表示获取当前的机器时间。
代码段
b=time(NULL); //表示获取当前的机器时间。
a是代码段执行前的时间,b是代码段执行后的时间(单位是秒),那么b-a当然是代码段的执行时间了。输出时,以长整型输出时间。
希望这个解答可以帮到你
CLOCK()函数:
clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t
clock(void)
;
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock
tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在timeh文件中,我们可以找到对它的定义:
#ifndef
_CLOCK_T_DEFINED
typedef
long
clock_t;
#define
_CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数。在timeh文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define
CLOCKS_PER_SEC
((clock_t)1000)
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void
elapsed_time()
{
printf("Elapsed
time:%u
secs\n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#include
<stdioh>
#include
<stdlibh>
#include
<timeh>
int
main(void)
{
long
i
=
10000000L;
clock_t
start,
finish;
double
duration;
/
测量一个事件持续的时间/
printf(
"Time
to
do
%ld
empty
loops
is
",
i)
;
start
=
clock();
while(
i--
);
finish
=
clock();
duration
=
(double)(finish
-
start)
/
CLOCKS_PER_SEC;
printf(
"%f
seconds\n",
duration
);
system("pause");
}
在笔者的机器上,运行结果如下:
Time
to
do
10000000
empty
loops
is
003000
seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
time_t
time(
time_t
timer
);
返回值是1970年到现在的秒数
用long型接就可以了
参数也是同样意义
如
long
time_s
=
0;
time_s
=
time(
NULL
);
//
time_s就是1970年到现在的秒数
或者
long
time_s
=
NULL;
time(time_s);
//
time_s就是1970年到现在的秒数
要计算前后一段时间的话之前取一次time,之后取一次相减就知道用了多少秒了
秒表计时器的代码\x0d\#include \x0d\#include \x0d\#include \x0d\#include \x0d\struct tm //定义时间结构体,包括时分秒和10毫秒 \x0d\{ \x0d\int hours,minutes,seconds; \x0d\int hscd; \x0d\}time,tmp,total; //time用以计时显示,tmp用以存储上一阶段时间,total记总时间 \x0d\int cnt; \x0d\\x0d\FILE fout; \x0d\//每次调用update函数,相当于时间过了10ms \x0d\void update(struct tm t) \x0d\{ \x0d\\x0d\(t)hscd++; //10ms单位时间加1 \x0d\cnt++; \x0d\if ((t)hscd==100) //计时满1s,进位 \x0d\{ \x0d\ (t)hscd=0; \x0d\ (t)seconds++; \x0d\} \x0d\if ((t)seconds==60) //计时满一分,进位 \x0d\{ \x0d\ (t)seconds=0; \x0d\ (t)minutes++; \x0d\} \x0d\if ((t)minutes==60) //计时满一小时,进位 \x0d\\x0d\{ \x0d\ (t)minutes=0; \x0d\ (t)hours++; \x0d\} \x0d\if((t)hours==24) (t)hours=0; \x0d\//delay(); \x0d\Sleep(10); //Sleep是windows提供的函数,作用是暂停程序,单位毫秒,所以此处暂停10ms \x0d\} \x0d\void display(struct tm t) \x0d\{ \x0d\//此处输出计时结果,\r为回车不换行,既一直在同一行更新时间 \x0d\printf("%d:",(t)hours); \x0d\printf("%d:",(t)minutes); \x0d\printf("%d:",(t)seconds); \x0d\printf("%d\r",(t)hscd); \x0d\//printf("Now, press ‘e’ key to stop the clock"); \x0d\} \x0d\void time_init() //初始化时间 \x0d\{ \x0d\timehours=timeminutes=timeseconds=timehscd=0; \x0d\} \x0d\void get_total() //计算总时间 \x0d\{ \x0d\totalhscd = cnt % 100; \x0d\cnt /= 100; \x0d\totalseconds = cnt % 60; \x0d\cnt /= 60; \x0d\totalminutes = cnt % 60; \x0d\cnt /= 60; \x0d\totalhours = cnt; \x0d\} \x0d\int main() \x0d\{ \x0d\char m; \x0d\time_init(); \x0d\cnt = 0; \x0d\fout = fopen("timeouttxt","w"); \x0d\printf("按回车键开始计时!\n"); \x0d\while(1) \x0d\{ \x0d\ m = getch(); \x0d\ if(m != ‘\r’) //读入一个输入,如果是回车,那么跳出次循环 \x0d\ printf("输入错误,仅能输入回车键!\n"); \x0d\ else \x0d\ break; \x0d\} \x0d\printf("已经开始计时,但是你可以按回车键以分段计时!\n"); \x0d\while(1) \x0d\{ \x0d\ if(kbhit()) //此处检查是否有键盘输入 \x0d\ { \x0d\ m=getch(); \x0d\ if(m == ‘\r’) //如果等于回车,那么计时结束,跳出循环 \x0d\ break; \x0d\ else if(m == ‘ ‘) //如果等于空格,显示此次计时,初始化计时器 \x0d\ { \x0d\ tmp = time; //记录上一段计时器结果 \x0d\ fprintf(fout,"%d:%d:%d:%d\n",tmphours,tmpminutes,tmpseconds,tmphscd); //写入文件 \x0d\ time_init(); \x0d\ printf("\n"); \x0d\ } \x0d\ else \x0d\ { \x0d\ printf("输入错误,仅支持输入回车键或者空格键!\n"); \x0d\ } \x0d\ } \x0d\ update(&time); //更新计时器 \x0d\ display(&time); //显示计时器时间 \x0d\} \x0d\tmp = time; //输出最后一次即使结果,写入文件 \x0d\fprintf(fout,"%d:%d:%d:%d\n",tmphours,tmpminutes,tmpseconds,tmphscd); \x0d\get_total(); //计算总的时间,显示,并写入文件 \x0d\printf("\n总时间:%d:%d:%d:%d\n",totalhours,totalminutes,totalseconds,totalhscd); \x0d\fprintf(fout,"统计时间:%d:%d:%d:%d\n",totalhours,totalminutes,totalseconds,totalhscd); \x0d\fclose(fout); \x0d\printf("已经保存到当前目录下的timeouttxt文件中按任意键结束!"); \x0d\getch(); \x0d\\x0d\}
以上就是关于c语言如何让程序开始计时 如果 *** 作者不进行 *** 作程序就自动停止全部的内容,包括:c语言如何让程序开始计时 如果 *** 作者不进行 *** 作程序就自动停止、C语言中有没有用于计时的函数怎么用、如何利用C语言编制计时器代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)