命令行整数更改值?

Command line integer changing value?

我正在尝试从命令行解析两个参数:一个字符串和一个整数。我试图在不使用 getopt 或 argp 等内置解析器的情况下进行此解析。我已经弄清楚如何正确解析字符串,但是当我解析 int 时,它会更改值吗?我不确定为什么会这样。这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    char* filename;
    int prefix;
    int x;
    for(x = 0; x < argc; x++)
    {
        if(x == 1)
        {
            filename = argv[x];
        }
        if(x == 2)
        {
            prefix = *argv[x];

        }
    }
    printf("%s\n", filename);
    printf("%d\n", prefix);
}

当我传入参数时:filename 70

它会打印出:filename 55

为什么它会这样改变我的 int 值?我用各种值对其进行了测试,我注意到它甚至不是一个一致的偏移值。我该如何解决这个问题以正确解析我的 int?谢谢

您的参数 (70) 是一个字符串。当你这样做时:

prefix = *argv[x];

您正在将字符 (7) 转换为整数。这将为您提供 7 的 ASCII 值,即 55。进行以下更改。这会将字符串转换为整数。

prefix = atoi(argv[x]);

atoi 是 ASCII 到整数