c++ - 如何用C连续输出计算开始后的秒数?

标签 c++ c time timer clock

我正在尝试编写一个在计算期间运行的“实时”计时器。它应该连续输出自计算开始以来的秒数——类似于进度条。到目前为止我这样做了:

#include <conio.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    clock_t t;
    t = clock();

    while (!_kbhit())
    {
        t = clock() - t;
        printf("%f", ((float)t) / CLOCKS_PER_SEC);
        system("cls");
    }

    return 0;
}

但是有几个问题:

  • 由于 system("cls") 的调用而闪烁。
  • 由于 printf() 的连续调用,时间目前还不正确

有没有一种使用 C 来完成此操作的相当简单的方法?

最佳答案

一个非常简单但不理想的方法就是如此频繁地停止打印,所以这里有一个未经测试的代码作为示例,每隔 INTERVAL 时钟打印一次时间。

#define INTERVAL 1000
int main(void)
{
   clock_t t;
   t = clock();
   clock_t step_time = INTERVAL;

   while (!_kbhit())
   {
      t = clock() - t;
      if (t - step_time > INTERVAL){
         step_time = t + INTERVAL;
         printf("%f", ((float)t) / CLOCKS_PER_SEC);
         system("cls");
      }
   }    
return 0;
}

您可以将 INTERVAL 更改为更小的值

关于c++ - 如何用C连续输出计算开始后的秒数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21168499/

相关文章:

Golang 检查数据是否为 ​​time.Time

c++ - 有没有办法在 Visual Studio Express '12 项目中编译和运行单个 .cpp 文件?

c - 使用 scanf 和 '%d' 时如何区分 int 和 char

c - 解析问题预期语句C程序

c - 为什么在这种情况下 ptr + 1 与++ptr 不同?

android - Firebase 数据库的常用时间

C++ 调试打印宏 OS X Clang 兼容

c++ - 标准是否指定哪些函数被声明为内联?

c++ - move 构造函数未被调用

java - EditText 中的自动日期和时间 - Android