2017-04-06 49 views
1

因此,我正在考慮哈佛的CS50,這可以讓那些樂意接受這個問題的人們受益。從輸入獲得特定範圍的花車

我正在製作一個名爲Resize的程序,其中我們需要3個命令行參數,第一個是'f'。確切的報價:

第一(F)必須是(0.0,100.0]浮點值

的問題是:如何從一個命令 - 設定的範圍接受的值的我們應該使用sscan()和atof()函數來做到這一點

+1

程序必須檢查輸入,如果輸入無效,則退出並提供信息消息,以便用戶可以正確調用程序。 –

回答

1

沒有辦法限制命令行參數,因爲它完全由命令的用戶決定。獲取參數並根據您的要求進行檢查。在您的情況下,採用參數,然後將其轉換爲雙精度值並檢查如果它在期望的範圍內。

if (argc != 4) { 
    puts("not enough argument"); 
    exit(1); 
} 
char *strf = argv[1]; 
char *end = NULL; 
double f = strtod(strf, &end); 
if (end == strf || *end != '\0') { 
    puts("not a valid floating point value"); 
    exit(1); 
} 
if (errno == ERANGE) { 
    puts("value out of range"); 
    exit(1); 
} 
if (f <= 0.0 || f > 100.0) { 
    puts("value not in required range"); 
    exit(2); 
} 
// ... do other work with f 
+0

謝謝!它確實有幫助 –