在C中打印正确的数字时出错

时间:2016-02-02 00:35:13

标签: c

嗨,我是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;
}

3 个答案:

答案 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