2017-09-13 49 views
-2

我創建了一個結構變量。一個例子是:在C中的struct中存儲浮點數字

struct numbers 
    { 
     float start; 
     float end; 
     int middle; 
    }values; 

    int main() 
    { 
     scanf("%f %f %d", &values.start, &values.end, &values.middle); 
     printf("%f %f %d, &values.start, &values.end, &values.middle); 
    } 

當我嘗試通過用戶輸入,如「0 5.8 3」讀取這些變量的值。當我嘗試打印,它看起來像這樣

0.000000 0.0000000 -26148776(最後一個數字的變化,每次我運行程序,其餘的仍然爲0)

我怎樣才能解決這個問題?

在此先感謝!

+4

爲什麼在printf ?? – rsp

+0

您將地址傳遞給'printf'。不要從'scanf'複製。閱讀規範。 – StoryTeller

+0

在發佈[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)的將來,請複製粘貼一些工作代碼,而不是將其重新輸入到問題中。如果您重新鍵入,則可能會導致您添加其他無關的錯誤和問題,就像您對未終止的字符串所做的那樣。或者,甚至可以解決你所問的問題,但沒有意識到。 –

回答

2

函數的scanf family需要指針,因此它知道在哪裏存儲結果。

功能的printf family打印,所以它不需要指針。

如果printf格式規範與參數之間不匹配,則會導致未定義的行爲

所以簡單的解決方案是不要在您的printf調用中使用地址 - 運算符&作爲參數。