"string to long"(strtol
)関数がこれの標準です。基本的な使い方:我々は十進法を使用しているので
#include <stdlib.h>
int arg = strtol(argv[1], NULL, 10);
// string to long(string, endptr, base)
、ベースは10です。endptr
引数は、「最初の無効な文字」、すなわち、最初の非数字に設定されます。気にしない場合は、ポインターを渡す代わりに、引数をNULL
に設定します。
#include <stdlib.h>
char* p;
int arg = strtol(argv[1], &p, 10);
if (*p != '\0') // an invalid character was found before the end of the string
man pageは述べているように、あなたがerrno
にを使用することができます:あなたは数字以外が発生しない場合、あなたは確かにそれは(\0
はCの文字列を終了)「ヌルターミネータ」に設定されますすることができますエラーが発生していないことを確認します(この場合、オーバーフローまたはアンダーフロー)。
#include <stdlib.h>
#include <errno.h>
char* p;
errno = 0;
int arg = strtol(argv[1], &p, 10);
if (*p != '\0' || errno != 0) return 1;
// Everything went well
printf("%d", arg);
これ以外にも、カスタムチェックを実装できます。ユーザーが引数を渡したかどうかをテストします。その数が許容範囲内であるかどうかをテストする。
出典
2016-07-29 23:56:23
Luc
私はcnicutarがすでに答えを出したことを知っていますが、何が起こっているのか理解するのに役立ちます。 argv [1]が正確に何であるか知っていますか?つまり、あなたが得た成果を得た理由を説明できますか? –
私の意見では、argv [0]はコマンドそのものであり、argv [1]は最初に入力するパラメータです。この場合は7です。 – Michael
はい、そうですが、それは何ですか?どんなタイプ?あなたはそれで何ができますか?上記の例で得た成果はどうして得られますか?あなたはそれを加えたり乗算したりすることができますか?ユーザーが数字を入力していないのに './テスト7 'なんかか? –