下面是一些C代碼:的printf在Linux上的Windows VS
int i;
printf("This text is printed\nThis text is not until the for loop end.");
for (i = 5; i > 0; i--)
{
printf("%d", i);
sleep(1);
}
爲什麼文本'\n'
後剩下的不是for
循環開始之前打印?即使是for循環中的printf也只在循環結束後才被打印出來。 如果我在文本的末尾加上'\n'
,它會打印出來,但我不想換行。
這隻發生在Linux上,而不是在Windows上(只是改變睡眠(1)睡眠(1000)並添加windows.h)。
已回答:http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is-in-the-format-strin – dcaswell
Windows和Linux有着非常不同的控制檯輸出驅動程序。在Linux中,輸出被緩衝,直到程序出現'\ n'。 – lurker
爲什麼你認爲你不想在你的輸出結束時換行符?你(和許多其他Windows程序員)不會輸出它,但是它對於Unix程序員(例如我)來說似乎很奇怪 - 就像輸出一個換行符對Windows程序員來說看起來很奇怪,我猜。在Unix上,你會這樣做以確保輸出的產生 - 所以有一個合理的理由去做。在Windows上,據推測,默認模式對應於非緩衝,因此所有輸出在通話結束時生成。 –