int main(int argc, char *argv[])
{
int param = *argv[1];
printf("Parameter = %d\n",param);
}
我运行它./myProgram 5我希望5作为输出。由于某种原因,我得到的是53。
答案 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()
。