argv[] 中的 Int 参数

Int parameter in argv[]

所以基本上我把这个项目带到了学校,我们需要将 int 参数传递给 argv[]。该项目在 C 中。 我们不能使用 string.h

我试图将 argv[] 重新键入 int,但由于它只是一个指针,所以没有用。

这是我的代码:

if(argv[1][0] == '1'){
            printf("Hodnota LEVEL je 1");

       } 
       else if(argv[1][0] == '2'){
           printf("Hodnota LEVEL je 2");

       }

如您所见,我目前正在检查 argv[] 是否等于字符“1”或“2”,这不是我想要的。

我唯一想到的是用一些字符变量替换'1'和'2',然后将其重铸为int。完成此过程后,我可以检查它是 int 1 还是 int 2

还有其他方法可以解决我的问题吗?

如果你不允许使用标准库,那么你可以这样做:

int val = 0;
for ( char *p = argv[1]; *p != 0; p++ )
{
  val *= 10;
  val += *p - '0’;
}

十进制数字的字符编码保证是连续的,因此减去 '0' 的编码会得到等效的整数值 - 例如,'1' - '0' == 1'2' - '0' == 2 等。

您可能想要添加某种验证 - 如果 argv[1] == "abcd",您将得到一个有趣的结果。

如果您允许使用标准库,请改用strtol