在C中,为什么
strtoul(argv[1])
只是不起作用?看起来需要更多参数,但我无法阻止这个数字的持续时间。
谢谢!
P.S。 (argv [1]已正确设置)。
答案 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
应为NULL
或char *
的地址。如果它不是NULL
,则函数将指针设置为指向字符串中的第一个未使用的字符,因此要么是非数字,要么是nul终止。
base
指定该数字的基数。它可以在2到52之间(我相信)。您可能需要10.作为一种特殊情况,基数0检查前缀为0x
为十六进制,0
为八进制(而无为十进制)并相应地进行转换。
答案 2 :(得分:1)
试试这个(十进制值):
strtoul(argv[1], NULL, 10)