1
int main()
{
printf("Whats up");
sleep(3);
printf("StackOverflow? All having a nice day? ");
}
爲什麼輸出3秒後「Whats up Stack ..」而不是第一個「Whats up」然後3秒後剩下的?睡眠命令執行不是我預期的
int main()
{
printf("Whats up");
sleep(3);
printf("StackOverflow? All having a nice day? ");
}
爲什麼輸出3秒後「Whats up Stack ..」而不是第一個「Whats up」然後3秒後剩下的?睡眠命令執行不是我預期的
這是因爲stdout
通常是行緩衝。所以你的C庫緩衝輸出。您可以通過在printf()
中使用\n
或致電fflush(stdout)
來清除此問題。
printf("Whats up\n");
或
fflush(stdout); // call after the printf
您也可以關閉緩衝與setbuf()
:
setbuf(stdout, 0);
一個快速的注意,不直接相關的有機磷農藥的問題,但仍然具有現實意義。如果你在linux上使用換行符來刷新緩衝區,將只能在終端上運行,並且不能在文件重定向上工作 – JackVanier