2013-03-30 13 views
4

在C中,有時我的輸出不會打印到終端,除非我打印換行符\n。例如:爲什麼直到換行纔打印到shell?

int main() 
{ 
    printf("Hello, World"); 
    printf("\n"); 
    return 0; 
} 

世界您好將不會打印,直到下一個printf(我知道這從設置在gdb斷點)。有人可以解釋爲什麼會發生這種情況,以及如何解決它?

謝謝!

+0

來自TI wiki,但對於理解這一點有關:http://processors.wiki.ti.com/index.php/Tips_for_using_printf#Buffering_modes – us2012

+1

linebuffering(setvbuf(3)或stdbuf(1)) – sehe

回答

8

這是出於性能原因:將數據傳遞到控制檯過於昂貴(在執行速度方面)要逐個字符地完成。這就是爲什麼輸出被緩衝直到打印換行符爲止:字符被收集到一個數組中,直到需要打印時爲止,此時整個字符串被傳遞給控制檯。您還可以強制輸出明確,像這樣:

fflush(stdout); 
4

此外,以fflush()你可以setvbuf(3)設置緩衝選項。

相關問題