在C中使用strtoul

时间:2011-06-05 20:55:23

标签: c strtol

在C中,为什么

strtoul(argv[1])

只是不起作用?看起来需要更多参数,但我无法阻止这个数字的持续时间。

谢谢!

P.S。 (argv [1]已正确设置)。

3 个答案:

答案 0 :(得分:7)

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

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

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

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

请确保您也包含<stdlib.h>

答案 1 :(得分:3)

其他参数不适用于“数量有多长”。阅读联机帮助页。

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

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

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

答案 2 :(得分:1)

试试这个(十进制值):

strtoul(argv[1], NULL, 10)