在C中,为什么
strtoul(argv[1])
只是不工作?看起来需要更多参数,但我无法阻止这个数字有多长。
谢谢!
ps(argv[1] 设置正确)。
因为您使用错误数量的参数调用它。尝试
strtoul(argv[1], 0, 0);
或者,如果您只想强制执行 base-10:
strtoul(argv[1], 0, 10);
确保你也包括在内<stdlib.h>
!
其他参数不是“数字将多长时间”。阅读手册页。
unsigned strtoul(char *s, char **endptr, int base);
endptr
应该是NULL
或 a 的地址char *
。如果不是NULL
,则该函数将指针设置为指向字符串中第一个未使用的字符,因此是非数字或 nul 终止。
base
指定数字的基数。它可以在 2 到 52 之间(我相信)。您可能想要 10。作为一种特殊情况,base 0 检查0x
十六进制和0
八进制的前缀(而十进制则没有)并进行相应的转换。
试试这个(十进制值):
strtoul(argv[1], NULL, 10)