【问题标题】:Easiest way to do a millisecond countdown in C? [closed]在 C 中进行毫秒倒计时的最简单方法是什么? [关闭]
【发布时间】:2014-07-27 18:34:50
【问题描述】:

在 C (min:sec:milliseconds) 中进行毫秒倒计时并将其显示在屏幕上的最简单方法是什么?我只需要将程序执行到 cmd 提示窗口并查看 seconds:milliseconds 以测量屏幕截图之间的精确时间。

【问题讨论】:

  • 高精度定时器的细节因硬件和操作系统而异。

标签: c time


【解决方案1】:
#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 了解其他类似解决方案。

【讨论】:

  • 对不起,我没有正确解释,我只需要将程序运行到一个 cmd 提示窗口,程序应该会显示自程序启动以来经过的计时器 min:sec:milliseconds。那么我应该只做printf("%d", ss1); 吗?
  • ss1.tv_usec 将为您提供以微秒为单位的时间戳。一旦计算出两个时间戳之间的差异(以微秒为单位),您可以通过相应地将该数字除以将该结果转换为 min:sec:milliseconds,即将其除以 60000000 得到分钟,将余数除以 1000000 得到秒,并且最后将余数除以 1000 得到毫秒。
  • 我明白了,基本上我需要做一个无限循环,每毫秒(或几毫秒)运行一次并显示计数器。你知道我应该用什么来停止无限循环 1 毫秒或几毫秒吗?
  • 我不确定您的应用程序是什么,因此很难提供帮助。您可以使用 if 条件跳出循环(也许将此代码编写在单独的函数中,并在 condition 为真时返回其值。
  • 您可以使用 #include&lt;unistd.h&gt; 标头中的 usleep() 函数。这个函数只接受以微秒为单位的 int 参数,并且只适用于基于 Unix 的系统。要在 Windows 系统中实现相同的功能,您可以使用 Sleep()(区分大小写),它是 #include&lt;windows.h&gt; 指令的一部分,它以毫秒为单位接受 int 参数。
猜你喜欢
  • 2010-12-20
  • 2018-05-13
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
相关资源
最近更新 更多