2013-06-01 86 views
3

如果我嘗試在Windows 7上運行在Cygwin下下面的簡單代碼,的printf不打印到屏幕

#include <stdio.h> 
int main() { 
int i1, i2, sums; 

printf("Enter first integer\n"); 
scanf("%d", &i1); 

printf("Enter second integer\n"); 
scanf("%d", &i2); 

sums = i1 + i2; 
printf("Sum is %d\n", sums); 

return 0; 
} 

它編譯(通過GCC)沒有問題,但是當我試着執行它時,第一聲明(「輸入第一個整​​數」)不打印到終端,我必須輸入兩個連續的數字(例如3和4)之前,我,

3 
4 
Enter first integer 
Enter second integer 
Sum is 7 

任何人都可以向我解釋這裏發生了什麼。這在MinGW下運作得非常好。

+0

嘗試在cygwin的終端中運行應用程序。 – akhil

回答

0

看來你的程序的輸出是緩衝的。嘗試啓用行緩衝明確:

setlinebuf(stdout); 
+0

非常感謝你,是的,那也行得通。非常感激。 – user1060986

2

您可以通過使用

setbuf(stdout, NULL); 
+0

謝謝,是的,工作 – user1060986

6

就像@thejh說你流似乎緩衝試着在標準輸出禁用緩衝。數據尚未寫入受控序列。

而不是擺動緩衝區設置,你可以調用fflush後,每次寫入從緩衝區中獲利,仍然明確地強制執行所需的行爲/顯示。

printf("Enter first integer\n"); 
fflush(stdout); 
scanf("%d", &i1); 
+0

非常感謝,是的,就是這樣。非常感激。 – user1060986