我試圖在eclipse中運行下面的代碼,但控制檯保持空白,直到我停止程序,輸出「輸入下一個值(< = 0退出)2130567168分鐘35509452小時,48分鐘。「一遍又一遍地重複。Eclipse/MiniGW中的scanf問題
似乎scanf正在爲某些原因提供一些默認值...不知道爲什麼。我在程序停止前沒有看到任何東西,所以我認爲它可能與printf沒有被刷新有關,但我確保使用\ n強制刷新。
任何想法?
#include <stdio.h>
const int MIN_PER_HOUR = 60; // minutes per hour
int main(void)
{
int hour, min, left;
printf("Convert minutes to hours and minutes!\n");
printf("Enter the number of minutes (<=0 to Quit):\n");
scanf("%d", &min); // read number of minutes
while(min > 0){
hour = min/MIN_PER_HOUR; // truncated number of hours
left = min % MIN_PER_HOUR; // number of minutes left over
printf("%d minutes is %d hours, %d minutes.\n", min, hour, left);
printf("Enter next value (<=0 to quit)");
scanf("%d", &min);
}
printf("Done!\n");
return 0;
}
scanf函數是一個函數,是愚蠢的 - 「這幾乎是不可能做的scanf體面的錯誤恢復,通常讀取整個行(使用fgets或類似的東西)要容易得多,然後使用sscanf或其他技術來解釋它們。「 - 見http://www.eskimo.com/~scs/C-faq/q12.20.html – KernelJ 2009-12-13 18:21:45
檢查scanf的返回值,它可能提供更多的見解 – nos 2009-12-13 18:22:25
雖然我試圖學習C,但這是我教過的東西。令人沮喪的是,即使我認爲代碼是正確的,它也不起作用。 – 2009-12-13 18:23:15