0

浮動小数点数 (コマンド ライン入力) を読み込もうとしています。これは正しい方法ですか?

sscanf(argv[i], "%f", &float)
4

1 に答える 1

2

コマンド ライン引数からを抽出する 1 つの方法はsscanf()、 の要素を使用することです。また、戻り値をチェックして、 aが実際に文字列から抽出され、変数に格納されているかどうかを確認する必要があります。argvfloatfloat

strtod()2 番目の引数を使用してより適切な検証を実行できるため、おそらくより良い方法は を使用することです。そのポインターを使用して、変換で使用された最後の文字が文字列の最後の文字であることを確認できます。すなわち。有効な float が含まれていることを確認でき"3.5abc"ましたが、文字列全体が 1 つの有効な float ではありませんでした。

コマンドライン入力が から入力を読み取ることを意味している場合stdin、それは何の関係もargvなく、代わりにscanf()or fgets()+を使用する必要がありますstrtod()

atof基本的に のバージョンでありstrtod、追加のエラー チェック機能を提供しない関数もあることに注意してください。マニュアルページからは、次のとおりstrtod(nptr, (char **) NULL);です。C99 は、 の代わりに astrtof()を返す関数も提供します。aに a を代入して暗黙的に変換することができるので、使用しても問題が発生するとは思わないでください。floatdoubledoublefloatstrtod()

于 2012-02-26T23:07:54.953 に答える