嗨,我是C的新手,我正在尝试使用“factorial 8”运行程序时打印8。我没有得到8,而是得到56.有人可以解释为什么吗?
#include <stdio.h>
int main(int argc, char **argv)
{
int input;
if(argv[1] == NULL)
{
printf("Error: please supply an integer on the command line.\n");
return 0;
}
input = *argv[1];
printf("%d", input);
return 0;
}
答案 0 :(得分:2)
你得到的是58,因为你正在分配argv [1]碰巧指向的整数值。您可能需要查看monty(char)
atoi()
我真的建议您通过检查argc中的参数数量来验证您是否有参数,而不仅仅是解除引用argv [1]并检查它是否为空。
答案 1 :(得分:1)
这里:
input = *argv[1];
您正在尝试将字符串(argv [1])分配给int。
你应该这样:
input = atoi(argv[1]);
答案 2 :(得分:0)
main函数中的参数作为字符串传递。所以当你这样做时
input = *argv[1];
您正在为输入分配字符串值。如果你看一下ascii表,你可以看到角色&#34; 8&#34;值为56。
您可以使用atoi()函数作为其他答案强调,或者,您可以使用strtol()将字符串转换为整数。
有关atoi()和strtol()的更详细答案,请查看答案https://stackoverflow.com/a/3421555/1589566