如何在C中制作计时器?

时间:2015-03-15 13:10:17

标签: c linux

我正在使用stdlib.h头文件和time.h标头处理C中的计时器。我遇到了一个错误。如果你能帮助我,我会很高兴的。我的代码是:

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

int main()
{
    int s;
    int m = 0;
    while (s<=60)
    {
        system("clear");
        printf("%d Minutes %d Seconds", m, s);
        sleep(1000);
        s+=1;
        if (s==60)
        {
            m+=1;
            s=0;
        }
    }

    return 0;
}

程序没有显示任何输出而不是显示空白屏幕。

2 个答案:

答案 0 :(得分:2)

因为stdout的输出是line-buffered,所以如果你需要它更新一行内的输出(在打印\n之前),你需要用fflush()刷新缓冲区

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

int main()
{
    int s = 0;  // init it
    int m = 0;
    while (s <= 60)
    {
        system("clear");
        printf("\r");  // move cursor to position 0
        printf("%d Minutes %d Seconds", m, s);
        fflush(stdout);  // flush the output of stdout
        sleep(1);  // in seconds
        s += 1;
        if (s==60)
        {
            m+=1;
            s=0;
        }
    }

    return 0;
}

答案 1 :(得分:1)

sleep(1000)将睡眠1000秒。您必须将s初始化为零,因为您在while循环中读取它。 {em> unistd.h 中定义了sleep,因此您也应该包含它。