转义序列\ a不起作用

时间:2013-05-13 23:04:35

标签: c windows

我有以下C语言代码,它在我朋友的笔记本电脑上运行良好,但它在我的笔记本电脑上无效。

在此代码中,在此特定时间段内,我想发出提示音,但它不起作用,请帮忙。

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

C中是否有任何解决方案来解决此类依赖性

1 个答案:

答案 0 :(得分: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结束\n格式字符串,或者stdout不是终端,则应偶尔致电fflush(特别是delaysleep)。但是不要经常打电话。

PS。考虑在笔记本电脑上安装Linux [s]。并考虑使用GCC(稍后可能会使用MELT进行自定义)。它非常有趣,它是free software所以你可以研究内部实现。