使用time(NULL)在C中创建Delay()函数时遇到问题

时间:2014-09-09 22:27:49

标签: c debugging time delay

我对编程和C比较陌生,但我一直在尝试用C语言创建自己的“延迟”函数。 实质上,它会将程序暂停用户放置的秒数 in。例如:

    int main (int argc, char *argv[]) {
      printf("There will now be a ten second pause.\n");
      delay(10);
      printf("Ten seconds have now passed.\n");
      return 0;
    }

程序将打印第一个输出,等待十秒钟,然后打印最后一个输出。 我目前的功能如下:

    void delay(unsigned int seconds) {
      time_t old_time = time(NULL), target_time = old_time;
      while((target_time - old_time) < seconds) target_time = time(NULL);
    }

在等待给定的指定时间内,该功能非常准确。 但是,程序在延迟之前不会打印第一个输出 肯定不是我想要的:( 一旦程序启动,程序就会等待十秒,然后打印两个语句,而不是打印第一个语句,延迟,然后打印最后一个语句。

我是否因为对时间()的理解而错过了什么?或者这对某些人不起作用 原因?再次,为了澄清,我正在尝试解决延迟发生的问题,即使该函数出现在其他函数之后,也会发生在程序中的任何其他事件之前。 任何帮助我理解这一点的想法或建议都会很棒!

谢谢! :)

1 个答案:

答案 0 :(得分:0)

您的问题很可能是因为stdout流被缓冲了。查看 this link,它对这个主题有很好的写作。

另外,您是否有理由不使用C标准库的sleep()功能?

相关问题