1
ユーザーがコマンドラインからgetoptオプションに整数値だけを渡したかどうかを確認する方法はありますか?ユーザーは正の整数値のみを渡す必要があります。整数値と負の値のgetoptエラー処理
ここではIsdigit()関数が正しく動作しません。
case 's' :
flags=1;
start = atoi(optarg);
開始に整数値のみが含まれているかどうかを確認する方法はありますか?デフォルトその撮影の値によって
./prog -scf
私はATOI機能を使用していますが、ここでCFが渡されると、実際にそれがエラーを与える必要がありますので、いずれかの文字が、入力された0として。
はさえ)(strtolはしてみましたが、私はstrtolは()関数を使用する場合でも、一切使用
start = (int) strtol(optarg, &ptr, 10);
が、それは数や文字列の両方が渡された場合にのみ機能しません。
eg ./prog -s5abc --> this works
eg ./prog -sabc -->does not work
ここでもまた、チャーターだけが渡されるので、startは0の値をとります!しかし、ユーザー自身が0を渡すと、どうすればエラーを処理できますか?あなたが署名した数字で作業していると
eg ./prog -s0 --> s takes 0 value, valid
eg ./prog -sabc --> s takes 0 value , but invalid
'(開始<0){...}であれば、'? –
「*が正しく動作しません」とはどういう意味ですか? – cdarke
参照:[最小限の完全で検証可能なサンプルの作成方法**](http://stackoverflow.com/help/mcve) –