在C中使用strtoul

Jos*_*eph -2 c strtol

在C中,为什么呢

strtoul(argv[1])

只是不起作用?看起来需要更多的参数,但我不能阻止这个数字有多长.

谢谢!

ps(argv [1]已正确设置).

R..*_*R.. 7

因为你用错误的参数来调用它.尝试

strtoul(argv[1], 0, 0);
Run Code Online (Sandbox Code Playgroud)

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

strtoul(argv[1], 0, 10);
Run Code Online (Sandbox Code Playgroud)

一定要包括在内<stdlib.h>!

  • 我会接受这是个人偏好,但我觉得使用`NULL`会在调用可变参数函数或缺少原型的(uhg)函数时给人一种错误的安全感.允许实现将`NULL`定义为任何空指针常量,因此`0`,`(void*)0`或甚至`(1-1)`都是有效的.使用`NULL`隐藏了非可移植的假设,即`NULL`被定义为`(void*)0`,这导致代码在假设为假时将中断.使用"0"捕获少数情况(如可变函数),你确实需要一个强制转换并提示你修复它们. (4认同)
  • @Chris:6.3.2.3/3:"值为0的整型常量表达式,或者类型为`void*`的表达式,称为*null指针常量*".7.17/3:"宏是`NULL`,扩展为实现定义的空指针常量......".`(1-1)`是一个值为0的ICE.对于那个问题,所以是'0L`. (2认同)