2014-02-19 33 views
1

我寫了一套代碼掃描值,並使用它們來測試中心極限定理。然而,當我以後使用的scanf我的節目,我輸入的所有值運行我的程序沒有進行到下一個代碼行:這個問題是這樣的:我的C代碼沒有響應後scanf語句

printf("*** DEMONSTRATION OF CENTRAL LIMIT THEOREM ***"); 
printf("Enter parameters for the distribution [a b] ==> "); 
scanf("%f %f",&a,&b); 
printf("Enter distribution to display [1=data, 2=mean] ==> "); 
scanf("%d",&option); 
printf("Enter number in each group      ==> "); 
scanf("%d",&group); 
printf("Enter number of samples of groups    ==> "); 
scanf("%f",&times); 
printf("are we here yet"); 
這些printf的後

和scanf程序開始做計算。但是當我編譯(成功)後運行程序時。看起來我的代碼卡在scanf後(「%f」,&次);

行「我們還在這裏」永遠不會被打印,這意味着程序沒有通過scanf。我沒有做過很多C編程,這似乎對我來說真的很奇怪,有人可以找出程序爲什麼沒有經過scanf行(「%f」,&次);我真的不懂它

+0

'printf()'調用後會發生什麼?你確定這不僅僅是因爲你沒有在它的末尾加入''\ n'',或者打電話給'fflush(stdout)'? –

+0

printf()之後我有一個if語句來檢查option的輸入值,如果這個選項是1,它會經過一系列的算法,試圖通過純數據顯示中心極限定理,如果選項== 2它顯示中心極限定理通過數據的平均值。但問題是在scanf後沒有任何顯示 – nanobots

+0

當我運行該程序時,它就像這樣 輸入參數分配[ab] ==> 0.2 0.7 輸入分配顯示[1 = data,2 = mean] == > 2 在每個組中輸入數字==> 10 輸入組樣本數量==> 100 – nanobots

回答

2

終端的輸入/輸出是用C語言進行行緩衝的,輸出不會顯示,直到輸出換行符,或者調用fflush(stdout),或者程序正常終止,所有緩衝區都是無論如何都要衝洗。更改:

printf("are we here yet"); 

到:

printf("are we here yet\n"); 

或:

printf("are we here yet"); 
fflush(stdout); 

,你應該看到您的輸出。

+0

謝謝我意識到,scanf是不會導致使用後的問題。因爲scanf之後的行確實已經打印這是我的代碼中的其他內容--algorithm part grrrr我現在要嘗試修復它 – nanobots