2016-04-09 24 views
-1

我有這樣一段代碼讀取數字float和接收EOFCtrl鍵d後應立即停止,但它只是不發生反應。的scanf在迴路應反應以EOF信號,但它沒有

請幫忙嗎?

(我知道這看起來奇怪,但該-1控制是有原因的。)

do { 
    f++; 
    scanf("%f",&paid[f]); 
} while(paid[f-1] != 0 && paid[f] != EOF); 
+3

測試'scanf'應該是'1'(轉換的項目數)的返回值。 'EOF'不是一個值,它會在你的數組'float paid []'中出現。 –

+0

@WeatherVane感謝您的快速反應。它會像第四次按下,雖然... – Erik

+2

請發表[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve),它顯示了你已經嘗試過的,與實際的輸入,輸出和預期產出,這表明了問題。否則,我們可以整天提問,例如「您是否#include '」 –

回答

0

EOFscanf()返回值,不寫入通過內存地址的值。

do { 
    f++; 
} while(scanf("%f", &paid[f]) != EOF && paid[f - 1] != 0);