我正在尝试通过控制台参数将未签名的int值传递给我的程序。
我尝试了什么:
首先:检查ARGC是否为2,否则错误
如果有第二个值,我尝试将此值转换为:
strtoul(argv[1], NULL, 0)
所以当我通过" 100"时,我得到了" 1"
我在做什么错?
br
萨吉
€:向我的职能传递了错误的论点,发现了错误,谢谢
不看到实际代码,很难分辨出来,但是您可以将其用作基线:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
char *pCh;
unsigned long unlong = 42;
// Check enough arguments.
if (argc != 2) {
puts ("Not enough arguments");
return 1;
}
// Convert to ulong WITH CHECKING!
unlong = strtoul (argv[1], &pCh, 10);
// Ensure argument was okay.
if ((pCh == argv[1]) || (*pCh != ' ')) {
puts ("Invalid number");
return 1;
}
// Output converted argument and exit.
printf ("Argument was %ldn", unlong);
return 0;
}
成绩单如下:
pax> ./testprog 314159
Argument was 314159
如果这还不足以帮助您,我建议您发布最短的完整程序,其中显示出该问题的最短程序,然后我们可以用详细的细节告诉您什么问题: - )
您的方法应起作用。另外,您可以使用弦:
std::string str(argv[1]);
unsigned long ul;
std::stringstream(str)>>ul;