我遇到sleep()
功能不起作用的问题。例如:
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]){
printf("\nHello!");
sleep(1);
printf("\nBye!");
sleep(1);
return 0;
}
即便是这样的简单程序也行不通。它将睡2秒然后说“你好!再见!”并结束该计划。如果有人有任何想法,他们会很感激!
答案 0 :(得分:3)
缓冲输出到stdout直到换行符。 [紧接在printf之前的换行符应该刷新,但是以下字符将被缓冲,直到强制换行或显式刷新为止{re:greg h}]
要刷新标准输出,请致电fflush( stdout )
int main(int argc, char* argv[]){
printf("\nHello!");
// flush stdout
fflush( stdout );
sleep(1);
printf("\nBye!");
// flush stdout
fflush( stdout );
sleep(1);
return 0;
}
答案 1 :(得分:1)
默认情况下,在打印printf
字符时,会刷新\n
输出(实际发送到终端)。因此,您可以按如下方式使代码工作:
printf("Hello!\n");
sleep(1);
printf("Bye!\n");
sleep(1);
在这种情况下,我已将换行符\n
移至您正在打印的字符串的 end ,而不是开头。