参数传递C

时间:2014-04-29 16:34:00

标签: c

int main(int argc, char *argv[])
{
    int param = *argv[1];
    printf("Parameter = %d\n",param);   
}

我运行它./myProgram 5我希望5作为输出。由于某种原因,我得到的是53。

2 个答案:

答案 0 :(得分:3)

从声明中可以看出,argv是一个char指针数组。这意味着您的主函数不会传递数值5,而是(可能是ASCII或UTF8-)编码的字符串值“5”。如果查看ASCII table,您将看到字符“5”被编码为ASCII中的数值53。您还可以看到字母“a”编码为数字97,因此运行./myProgram a应输出Parameter = 97

要获取ASCII编码字符串的数值,您可以使用atoi(),例如写

int main(int argc, char *argv[]) {
    int param = atoi(argv[1]);
    printf("Parameter = %d\n",param);   
}

答案 1 :(得分:1)

C不会无意中将数组的内容转换为任何类型。

要尝试将0 - 已终止的char - 数组(C“字符串”)转换为int,请考虑使用strtol()