c语言怎么倒计时,如何在c语言程序中插入一个倒计时命令?
C语言中提供了许多库函数来实现计时功能,下面是一些常用的计时函数:
1、 time()
头文件:time.h
函数原型:time_t time(time_t * timer)
功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数
用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。
用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。
说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。
2、clock()
头文件:time.h
函数原型:clock_t clock(void);
功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。
说明:可以精确到毫秒,适合一般场合的使用。
3.、timeGetTime()
头文件:Mmsystem.h 引用库: Winmm.lib
函数原型:DWORD timeGetTime(VOID);
功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。
说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。
4、GetTickCount()
头文件:windows.h
函数原型:DWORD WINAPI GetTickCount(void);
功能:返回自设备启动后的毫秒数(不含系统暂停时间)。
说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。
5、QueryPerformanceCounter()、QueryPerformanceFrequency()
头文件:windows.h
函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。
补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:
在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。
说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。
6、gettimeofday()
Linux C函数。
头文件:sys/time.h
函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);
说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。
timeval的定义为:
struct timeval {
long tv_sec; // 秒数
long tv_usec; //微秒数
}
c语言怎么倒计时,如何在c语言程序中插入一个倒计时命令?相关推荐
- C语言:向一个有序数组中插入一个数据,并保持数组的有序性。
C语言:向一个有序数组中插入一个数据,保持数组的有序性. #include <stdio.h> //向一个有序数组中插入一个元素,重新实现有序,并输出. int main() {//注意数 ...
- kotlin数据库_如何在Kotlin应用程序中使用Xodus数据库
kotlin数据库 I want to show you how to use one of my favorite database choices for Kotlin applications. ...
- graphql redux_如何在Redux应用程序中使用GraphQL
graphql redux by Howon Song 通过宋颂恩 如何在Redux应用程序中使用GraphQL (How to use GraphQL in your Redux app) Fetc ...
- Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行
Linux 有问必答:如何在Ubuntu或者Debian中启动后进入命令行 提问:我运行的是Ubuntu桌面,但是我希望启动后临时进入命令行.有什么简便的方法可以启动进入终端? Linux桌面自带了一 ...
- ai中如何插入签名_如何在PDF中插入一个或多个空白页?
在编辑或修改PDF文档时,一般都需要新增空白页后再添加文本或图片等内容,那么如何在PDF中插入一个或多个空白页呢? 首先打开极速PDF编辑器,或打开需要编辑的PDF文档后,点击右上角"文档& ...
- 如何在Web应用程序中使用TWAIN驱动程序的自定义功能?
如何在Web应用程序中使用TWAIN驱动程序的自定义功能?接下来跟着小编一起来看看如何去实现. 本文适用于以下产品: Dynamic Web TWAIN v7 以上 ImageCapture Suit ...
- 如何在visio2010的框图中插入公式?
#如何在visio2010的框图中插入公式? 其实很简单,也没必要下载Mathtype 先在world中用自带的公式编辑器将公式写好,如下图 此时选中公式, 博文已经迁移到个人主页https://gu ...
- 微信小程序中使用圆形倒计时实例
需求概要 小程序中使用圆形倒计时,效果图: 思路 使用2个canvas 一个是背景圆环,一个是彩色圆环. 使用setInterval 让彩色圆环逐步绘制. 解决方案 第一步先写结构 一个盒子包裹2个c ...
- chrome麦克风权限_如何在Chrome扩展程序中处理麦克风输入权限和语音识别
chrome麦克风权限 by Palash Taneja 由Palash Taneja 如何在Chrome扩展程序中处理麦克风输入权限和语音识别 (How to handle mic input pe ...
最新文章
- Java学习提升体系结构
- 马化腾:我创办腾讯的这些年
- C#正则表达式提取HTML中IMG标签的SRC地址(转)
- DATAX工具同步数据从hdfs到drds性能优化
- Rxjs 里 subscribeToArray 工具函数的详细分析
- 【设计模式】单例模式 Singleton Pattern
- php 去掉url中的index.php,php 去掉url中的index.php
- linux下查看文件及目录个数
- php网站加广告位,HotNews Pro主题文章内容上面添加广告位
- 高效程序猿之(三)VS2010快捷键(转)
- 函数式编程 读书笔记
- android 动态 添加删除 控件 图片
- 快速使用 Javassist
- 计算机主机不启动的故障,电脑不能正常启动的原因及解决方法
- 四川为何紧急叫停某知名声乐演员计划在川23场次个人巡演活动?
- 考研二战,入职华为,反向调剂电子科大深圳
- Cloudera Manager 基本介绍(CDH版本)
- 泛式的extends和supper
- 关于中台的深度思考和中台实战
- Brendan Gregg ----Linux Performance Tools NEWS
热门文章
- c语言程序设计电大作业,电大C语言程序设计第1234次作业及答案
- hadoop_入门1
- 云主机和物理机PK图
- t-SNE algorithm(t-分布邻域嵌入算法)
- linux 多路径重启,(linux多路径连接iScsi存储重启自动连接.docx
- demo flink写入kafka_Flink结合Kafka实时写入Iceberg实践笔记
- tf.keras.layers.Dense() 示例
- python vars 的用法
- 车道检测--VPGNet: Vanishing Point Guided Network for Lane and Road Marking Detection and Recognition
- 【pytorch】torch.mm,torch.bmm以及torch.matmul的使用