2017-04-06 5 views
1

私はハーバードのCS50を取っているし、これはクーレを受け取り、この問題で立ち往生している人々に役立つ可能性があります。入力のフロートの特定の範囲を取得

私は3つのコマンドライン引数をとるResizeというプログラムを作っています。最初のものは 'f'です。正確な引用:

最初の(f)は(0.0、100.0]で浮動小数点値でなければならない問題がある

:コマンド+から受け付けた値の範囲を設定する方法 sscan()とatof()関数を使用してこれを行う必要があります。

+1

プログラムは、入力を確認する必要があり、入力が無効である場合には、情報メッセージで終了ユーザーは、正しくプログラムを呼び出すことができるようにします。 –

答えて

1

コマンドライン引数はコマンドのユーザによって完全に決定されるため、制限する方法はありません。あなたの場合、引数を取って、それをdouble値に変換してチェックしてくださいそれが所望の範囲内にある場合。

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

ありがとう!本当に助けになりました –

関連する問題