【发布时间】:2012-03-19 20:08:11
【问题描述】:
由于某种原因,我的 C 程序拒绝将 argv 的元素转换为整数,我不知道为什么。
int main(int argc, char *argv[])
{
fprintf(stdout, "%s\n", argv[1]);
//Make conversions to int
int bufferquesize = (int)argv[1] - '0';
fprintf(stdout, "%d\n", bufferquesize);
}
这是运行 ./test 50 时的输出:
50
-1076276207
我尝试删除 (int),在 (int) 和 argv[1] 之间同时抛出 * 和 & - 前者给了我一个 5 但不是 50,但后者给了我一个类似于那个的输出以上。删除 - '0' 操作没有多大帮助。我还尝试制作一个 char first = argv[1] 并使用 first 进行转换,这很奇怪,无论输入如何,我都得到了 17。
我非常困惑。怎么回事?
【问题讨论】:
-
我想你的意思可能是
argv[1][0](类型是char)argv[1] 被输入为char*),因为它通常不起作用:-)