2

我有以下一段 C 语言代码,它在我朋友的笔记本电脑上运行良好,但在我的笔记本电脑上不工作。

在这段代码中,在这个特定的时间段之后,我想发出警报声,但它不起作用,请帮忙。

for(i=1;i<10;i++)
{
 delay(500);
 if(i==9)
    printf("Time up \a");
}

C中是否有任何解决方案来解决这种依赖关系

4

1 回答 1

2

输出可能会保留在stdio缓冲区中(FILE尤其stdout是每个缓冲区;请参阅setvbuf(3))。

我建议添加对fflush(3)的调用,例如

for(i=1;i<10;i++) {
  delay(500); 
  if(i==9) {
    printf("Time up \a");
    fflush(stdout);
  }
}

顺便说一句,您可以调用fflush(NULL);以刷新每个FILE缓冲区。

我不熟悉delay。我认为这是某种sleep(3)

根据经验,如果您不是以或不是终端来结束printf格式字符串,您应该偶尔调用(尤其是使用or )。但也不要太频繁地调用它。\nstdoutfflushdelaysleep

PS。考虑在您的笔记本电脑上安装 Linux。并考虑使用GCC(也许稍后使用MELT对其进行自定义)。它非常有趣,而且它是免费软件,因此您可以研究内部实现。

于 2013-05-13T23:20:45.850 回答