【发布时间】:2014-11-03 11:02:47
【问题描述】:
我对编程和 C 语言比较陌生,但我一直在尝试用 C 语言创建自己的“延迟”函数。 从本质上讲,它会在用户输入的秒数内暂停程序 例如:
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);
}
该函数在等待指定的时间后相当准确。 但是,程序在延迟之前不会打印第一个输出,这 肯定不是我想要的:( 相反,程序一启动就等待十秒钟,然后打印两条语句,而不是打印第一条语句,延迟,然后打印最后一条。
我对 time() 的理解是否遗漏了什么?或者这对某些人不起作用 原因?同样,为了澄清起见,我试图解决延迟发生在程序中的其他任何事情发生之前的问题,即使该函数在其他函数之后也是如此。 任何有助于我理解这一点的想法或建议都会很棒!
谢谢! :)
【问题讨论】:
-
flush stdout - 缓冲区未满(正在打印,只是未显示)
-
太棒了,它成功了!从来不知道这个功能的存在。感谢您的帮助:)
-
VOID Sleep(DWORD dwMilliseconds);for windows inwindows.h