2017-06-14 32 views
1

我目前正在學習使用Eclipse IDE的初學C編程。Eclipse IDE總是先要求輸入,而不管實際的代碼順序

以下是假設以第一打印出一條線,採取一些輸入,然後打印出第二線條一個非常基本的程序。但是我的Eclipse總是先問我輸入,然後再打印出兩條線。

這是非常令人沮喪,因爲它是如此簡單的東西並不起作用。我究竟做錯了什麼?

#include <stdio.h> 

int main(void){ 

    int aNumber; 

    printf("first line\n"); 
    scanf("%d", &aNumber); 
    printf("second line with %d", aNumber); 

    return 0; 
} 

enter image description here

+1

使用了錯誤的DUP,試試這個:https://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is -in-the-format-strin – John3136

+1

這是在Windows中運行嗎?也許控制檯期望'\ r \ n'換行而不是'\ n'?您的代碼在OS X中工作正常。 –

+0

@ John3136感謝您的建議!但是在閱讀了所建議的副本之後,我有這種被拋入海洋中心的感覺,卻沒有學會如何游泳。我認爲現在建議的dup是我的聯盟,對於像我這樣的初學者 – Thor

回答

1

有同樣的問題一次。 通過刷新標準輸出來解決它。

#include <stdio.h> 

int main(void){ 
    int aNumber; 
    printf("first line\n"); 
    fflush(stdout); // Prints stdout content 

    scanf("%d", &aNumber); 
    printf("second line with %d", aNumber); 

    return 0; 
} 
+0

這可能不是吧。'stdout'是行緩衝,這意味着它的友以'\ n'方式刷新。 –

+0

它應該自動刷新,但不是。 我有這個問題在windows上使用mingw。 這可能值得一拍。 –

+0

@MDXF這可能是一個特定於Eclipse的錯誤,其中標準庫認爲它正在寫入文件,因此不需要行緩衝。 – immibis

相關問題