如何获得无符号的int作为控制台参数

How to get unsigned int as console argument?

本文关键字:控制台 参数 int 何获得 无符号      更新时间:2023-10-16


我正在尝试通过控制台参数将未签名的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;