我有以下C语言代码,它在我朋友的笔记本电脑上运行良好,但它在我的笔记本电脑上无效。
在此代码中,在此特定时间段内,我想发出提示音,但它不起作用,请帮忙。
for(i=1;i<10;i++)
{
delay(500);
if(i==9)
printf("Time up \a");
}
C中是否有任何解决方案来解决此类依赖性
答案 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
(特别是delay
或sleep
)。但是不要经常打电话。
PS。考虑在笔记本电脑上安装Linux [s]。并考虑使用GCC(稍后可能会使用MELT进行自定义)。它非常有趣,它是free software所以你可以研究内部实现。