C语言中的时间函数clock()和time()你都了解吗

 更新时间:2022年02月18日 14:45:59   作者:嵌入式@hxydj  
这篇文章主要为大家详细介绍了C语言中的时间函数clock()和time(),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

时间函数在编写代码的时候会经常用到,下面就来总结一下clocktime函数的用法,函数原型如下:

  clock_t __cdecl clock(void);
  __CRT_INLINE time_t __cdecl time(time_t *_Time);

clock函数

clock函数返回程序从运行开始到当前调用函数位置处CPU所使用的时间,通过这个函数就可以计算某段代码运行时所使用的时间。

下面通过一段简单的代码测试一下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
	clock_t start_t, end_t;
	start_t = clock();
	sleep(1);
	end_t = clock();
	printf("%d %d",start_t,end_t); 
	return 0;
}

刚进入程序时通过clock函数读取当前CPU所使用的时间,然后使用sleep函数延时1秒,接着在使用clock函数读取当前CPU所使用的时间,这样这两个时间差应该就是1秒。程序运行结果如下:

image.png

通过打印的结果可以看出,第一次读取的CPU时间是0,第二次读取的CPU时间是1000,在程序中延时了1秒,说明clock函数返回的时间单位是毫秒(ms)。

如果要将程序运行的时间换算为以秒为单位的话,这里就需要计算两次运行的时间差,然后除以每秒钟系统的计数次数。系统中每秒钟的计数次数用一个宏定义的值来表示。

#define CLOCKS_PER_SEC 1000

这个CLOCKS_PER_SEC的值为1000,说明CPU1秒钟计数1000次,也就是1ms计数一次,这个和上面分析的结果是一样的。

修改程序,将时间换算为秒,继续测试。

image.png

通过结果可以看出这个循环耗时32ms,也就是0.032s。

time函数

time函数返回的是从 1970-01-01 00:00:00 开始到现在所经过的秒数。

下面通过一个简单的代码演示一下time函数的用法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char** argv)
{
	time_t seconds;
	seconds = time(NULL);
	printf("自1970-01-01 起的秒数:%d s",seconds);
	return 0;
}

time函数返回值是一个time_t的类型,它的本质其实也是一个整形数据。

image.png

函数返回的是一个整形的秒数,将返回值打印出来,结果如下:

image.png

将这个秒数通过时间戳在线转换网站转换为年月日,转换网址为: https://tool.lu/timestamp/ 转换结果如下:

image.png

转换后的时间和程序运行时的时间是一样的,说明time函数返回的时间是准确的,这样在程序运行过程中想要获取准确的时间时,就可以通过time函数来获取系统的准确时间。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!    

相关文章

  • C语言实现学生宿舍信息管理系统课程设计

    C语言实现学生宿舍信息管理系统课程设计

    这篇文章主要为大家详细介绍了C语言实现学生宿舍信息管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C语言控制语句之 循环

    C语言控制语句之 循环

    C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构,今天通过本文给大家分享C控制语句的相关知识,需要的朋友参考下吧
    2021-07-07
  • C语言学习基础知识分享

    C语言学习基础知识分享

    这篇文章主要介绍了C语言学习基础知识分享的相关资料,需要的朋友可以参考下
    2023-01-01
  • VScode运行C++中文终端乱码的解决方案

    VScode运行C++中文终端乱码的解决方案

    这篇文章主要介绍了VScode运行C++中文终端乱码的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • C语言中求和、计算平均值、方差和标准差的实例

    C语言中求和、计算平均值、方差和标准差的实例

    这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Qt自定义实现一个等待提示Ui控件

    Qt自定义实现一个等待提示Ui控件

    等待样式控件是我们在做UI时出场率还挺高的控件之一,所以这篇文章主要为大家介绍了Qt如何自定义一个好看的等待提示Ui控件,感兴趣的可以了解下
    2024-01-01
  • C语言实现扫雷游戏详解(附源码)

    C语言实现扫雷游戏详解(附源码)

    大家好,本篇文章主要讲的是C语言实现扫雷游戏详解(附源码),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C语言实现简易停车场管理系统

    C语言实现简易停车场管理系统

    这篇文章主要为大家详细介绍了C语言实现简易停车场管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++为什么不能修改set里的值?非要修改怎么办?

    C++为什么不能修改set里的值?非要修改怎么办?

    因为之前的文章有说过C++中 set的介绍及用法,今天这篇文章我们就来说说C++为什么不能修改set里的值,如果非要修改的话应该怎么办,下面我们一起进入文章看看下面内容,需要的朋友可以参考以下,希望对你有所帮助
    2021-11-11
  • C++类URL编码和解码使用技巧

    C++类URL编码和解码使用技巧

    在项目开发过程中,经常会使用到c++ 的url编码和解码,本文将以此问题详细介绍使用技巧,需要的朋友可以参考下
    2012-11-11

最新评论