命令行整数更改值?
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 到整数
我正在尝试从命令行解析两个参数:一个字符串和一个整数。我试图在不使用 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 到整数