【发布时间】:2014-07-27 18:34:50
【问题描述】:
在 C (min:sec:milliseconds) 中进行毫秒倒计时并将其显示在屏幕上的最简单方法是什么?我只需要将程序执行到 cmd 提示窗口并查看 seconds:milliseconds 以测量屏幕截图之间的精确时间。
【问题讨论】:
-
高精度定时器的细节因硬件和操作系统而异。
在 C (min:sec:milliseconds) 中进行毫秒倒计时并将其显示在屏幕上的最简单方法是什么?我只需要将程序执行到 cmd 提示窗口并查看 seconds:milliseconds 以测量屏幕截图之间的精确时间。
【问题讨论】:
#include <sys/time.h>
struct timeval ss1, ss2;
ss1.tv_usec; // first timestamp
gettimeofday(&ss1,NULL);
//Write code of screenshot capture
ss2.tv_usec; // second timestamp
gettimeofday(&ss2,NULL);
请注意,tv_usec 将以微秒为单位提供时间,1 millisecond = 1000 microseconds。
查看this question's answers 了解其他类似解决方案。
【讨论】:
printf("%d", ss1); 吗?
ss1.tv_usec 将为您提供以微秒为单位的时间戳。一旦计算出两个时间戳之间的差异(以微秒为单位),您可以通过相应地将该数字除以将该结果转换为 min:sec:milliseconds,即将其除以 60000000 得到分钟,将余数除以 1000000 得到秒,并且最后将余数除以 1000 得到毫秒。
condition 为真时返回其值。
#include<unistd.h> 标头中的 usleep() 函数。这个函数只接受以微秒为单位的 int 参数,并且只适用于基于 Unix 的系统。要在 Windows 系统中实现相同的功能,您可以使用 Sleep()(区分大小写),它是 #include<windows.h> 指令的一部分,它以毫秒为单位接受 int 参数。