由于某种原因,我的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*
),因为它通常不起作用 :-) - user166390