-2

在C中,为什么

strtoul(argv[1])

只是不工作?看起来需要更多参数,但我无法阻止这个数字有多长。

谢谢!

ps(argv[1] 设置正确)。

4

3 回答 3

7

因为您使用错误数量的参数调用它。尝试

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

或者,如果您只想强制执行 base-10:

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

确保你也包括在内<stdlib.h>

于 2011-06-05T20:57:19.440 回答
3

其他参数不是“数字将多长时间”。阅读手册页。

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

endptr应该是NULL或 a 的地址char *。如果不是NULL,则该函数将指针设置为指向字符串中第一个未使用的字符,因此是非数字或 nul 终止。

base指定数字的基数。它可以在 2 到 52 之间(我相信)。您可能想要 10。作为一种特殊情况,base 0 检查0x十六进制和0八进制的前缀(而十进制则没有)并进行相应的转换。

于 2011-06-05T21:02:56.013 回答
1

试试这个(十进制值):

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