Cでは、なぜですか
strtoul(argv[1])
うまくいかない?より多くのパラメータが必要なようですが、その数がどれだけ長くなるかを防ぐことはできません。
ありがとう!
ps(argv [1]は適切に設定されています)。
間違った数の引数で呼び出しているからです。試す
strtoul(argv[1], 0, 0);
または、10進数のみを適用する場合:
strtoul(argv[1], 0, 10);
あなたも含めてください<stdlib.h>
!
他のパラメータは「数がどれくらいになるか」のためではありません。マンページを読んでください。
unsigned strtoul(char *s, char **endptr, int base);
endptr
NULL
またはのアドレスである必要がありますchar *
。そうでない場合NULL
、関数は文字列の最初の未使用文字を指すようにポインタを設定するため、数字以外またはヌル終了のいずれかです。
base
数値がどのベースにあるかを指定します。2から52の間である可能性があります(私は信じています)。0x
おそらく10が必要です。特殊なケースとして、基数0は160
進数と8進数(および10進数はなし)の接頭辞をチェックし、それに応じて変換します。
これを試してください(10進値の場合):
strtoul(argv[1], NULL, 10)