-2

Cでは、なぜですか

strtoul(argv[1])

うまくいかない?より多くのパラメータが必要なようですが、その数がどれだけ長くなるかを防ぐことはできません。

ありがとう!

ps(argv [1]は適切に設定されています)。

4

3 に答える 3

7

間違った数の引数で呼び出しているからです。試す

strtoul(argv[1], 0, 0);

または、10進数のみを適用する場合:

strtoul(argv[1], 0, 10);

あなたも含めてください<stdlib.h>

于 2011-06-05T20:57:19.440 に答える
3

他のパラメータは「数がどれくらいになるか」のためではありません。マンページを読んでください。

unsigned strtoul(char *s, char **endptr, int base);

endptrNULLまたはのアドレスである必要がありますchar *。そうでない場合NULL、関数は文字列の最初の未使用文字を指すようにポインタを設定するため、数字以外またはヌル終了のいずれかです。

base数値がどのベースにあるかを指定します。2から52の間である可能性があります(私は信じています)。0xおそらく10が必要です。特殊なケースとして、基数0は160進数と8進数(および10進数はなし)の接頭辞をチェックし、それに応じて変換します。

于 2011-06-05T21:02:56.013 に答える
1

これを試してください(10進値の場合):

strtoul(argv[1], NULL, 10)
于 2011-06-05T20:58:28.493 に答える